redis的了解与学习

2022-07-19

1.redis编译后的bin目录下的基础命令介绍

redis-benchmark:性能测试工具

redis-check-apf:修复有问题的aof

redis-check-dump:修复有问题的dump.rdb

redis-sentinel:集群使用

redis-server:启动

redis-cli:客户端操作入口

2.操作基础命令:

清空当前库:flushdb
清空所有库:flushall
dbsize:查看库key数量
 select 库名:选择库
# 选择使用1号库 
select 1
默认16个库,可以在启动配置文件里设置,库为0~15
查看key:keys 正则表达式
# 正则表达式规则请自行查询 
# 查看当前库的所有key 
keys * 
# 查看名称为1的key 
keys 1 
# 查看包含*1*的key 
keys *1*
exists 查看key是否存在,type查看类型
# 查看key为1的是否存在 存在返回1 不存在返回0 
exists 1 
# 查看key为1的存储值的类型 
type 1
del=unlink 删除 del是直接删 unlink是后续异步删除
# 删除key为3的数据 成功返回1 因为该key数据不存在不成功返回0 
del 3 
unlink 3 
# 可以一次删掉多个数据 成功返回删掉的数量 
# 删除key为2,3,4的数据 
del 2 3 4
expire 设置有效时间 ttl查看有效时间
# 设置key为2的数据20秒有效时间 
expire 2 20 
# 查看key为2的有效时间还有多少 返回有效时间秒数 
ttl 2

3.String数据(2进制存储,安全,最大512M,一开始是成倍追加,超过1M,1M1M增加。)类型的命令:

set与setnx:set设置更新值;setnx是新添,存在则不改变
# 设置key为1值为1的数据 
set 1 1 
# 更新key为1的值 
set 1 2 
# 对key为1追加字符123 成功返回该字符串的长度 
append 1 123 
get:获取
# 获取key为1对应的值 
get 1
strlen:查看字符串长度
# 查看key为1对应的字符串长度 
strlen 1
当string存储的是数字时的特殊命令:自增自减 incr/decr,incrby/decrby,incrbyfloat/incrbyfloat(浮点数增减必须附一个增减值)
# key为1自增1 
incr 1 
# key为1自定义增 
# 每次增加2 
incrby 1 2 
# key为1自减1 
decr 1 
# key为1自定义减 
# 每次减少2 
decrby 1 2
多个设置与多个获取:mset,mget,msetnx
# 设置3对应3的值与4对应4的值 
mset 3 3 4 4 
# 获取 1 2 3 4的值 
mget 1 2 3 4 
# msetnx 如果设置的key有一个存在则该条命令的设置都失败 
mestnx 1 1 5 5 6 6 
# 上面这条命令会因为key为1的数据存在而执行失败,因此没有新增key为5的数据与key为6的值
去指定key的指定位置的字符串:getrange
# 取key为2的值的0到3位置的字符串 左包右包 
getrange 2 0 3 
# 加入key为2 对应 123456 上面这条命令返回1234
在指定位置插入字符串:setrange 注:该字符串长度不变,除非插入的字符串比之前长
# 从key为2对应的数据的下标为0的地方插入,替换掉俩个 
setrange 2 0 11 
# 假如 key为2对应123456 执行后key为2对应113456
getset:取旧换新,返回旧数据替换新数据
# 返回key为3对应的值并更新成. 
getset 3 .

4.List数据类型(快速链表,一个ziplist压缩列表,多了就是多个ziplist连接):

左插入与右插入:lpush/rpush
# 设置key为L1的一个列表 从左边依次插入 1 2 3 
# 我默认顺序是从左到右 
# 此时顺序是 3 2 1 
lpush L1 1 2 3 
# 同理 
rpush L2 1 2 3 
# 顺序为 1 2 3
左弹出与右弹出: lpop/rpop
# 从左弹出key为L1的1个 返回弹出的值 
lpop L1 1 
# 从右边弹出key为L1的2个 
rpop L1 2
遍历查看: lrange 从左边遍历查看
# 从左边遍历查看所有的 
lrange L1 0 -1 
# 从左边遍历查看从0到2的3个数据 左包右包 
lrange L1 0 2
获取对应下标的值:lindex
# 获取key为L1 下标为1的值 
lindex L1 1
获取长度 llen
llen L1
设置对应的下标的值:lset
#设置key为L1的下标为2的值为123 
lset L1 2 123
删除:lrem
# 从左边开始删除 1个值为22的数据 
lrem L1 1 22 
# 从右边开始删除 1个值为22的数据 
lrem L1 -1 22
插入 linsert,目前只能是第一个值的,而不能固定第几个这个值
# 在第一个值为3的前面插入22 
linsert L1 before "3" "33" 
# 在值为3的后面插入22 
linsert L1 after "3" "33"

 2022-07-20

5.set 自动排重 无序 结构是dict,使用hash表构造

设置新值: sadd

# 设置key为s1的set中添加值1,2,3 
sadd s1 1 2 3 
sadd s1 1 
# 返回0 因为之前的s1中含有1
取出所有值:smembers
# 查看s1内的值 
smembers s1
sismeber:查看值是否存在
# 查看1值是否存在在s1中 
sismember s1 1
scard:查看元素个数
scard s1
spop:随机去出一个值,取出后set中删掉
# 在s1中随机取一个 
spop s1 
# 在s1中随机取俩个 
spop s1 2
srandmeber:随机取出但不删除
# 随机在s1中取出3个值 
srandmeber s1 3
集合与集合之间的操作:smove一个集合移动到一个集合;sinter交集;sunion并集;sdiff差集;
sadd s3 1 2 3 
sadd s4 3 5 6 
# 把s3中的1转移到s4中 
move s3 s4 1 
# 此时 s3:2,3 s4:1 3 5 6 
# 查看交集 
sinter s3 s4 
# 3 # 查看并集 
sunion s3 s4 
# 1 2 3 5 6 
# 查看差集 返回s3中有但是s4中没有的 
sdiff s3 s4 
# 2

6.hash 适合存储对象,长度少时使用ziplist长度多使用hashtable存贮

设置值:hset与hsetnx(存在就不添加,一次只能添加一个)
设置值中多个键值对:hmset,已经弃用,hset已经取代。
#设置key为h1的值里的id-1 name-gd sex-man 
hset h1 id 1 name gd sex man 
hsetnx h1 age 18
取值:hget
# 取key为h1对应的value的id对应的值 
hset h1 id
hkeys与hvals:
# 查看所有键所有值
hkeys h1 
hvals h1
hexist:查看该键值对是否存在
# 查看h1中值中是否还有key为id的键值对 
hexist h1 id
hincerby:增加,同字符串中数据的增加

7.Zset 有序集合 每个元素关联一个score,根据score的值排序

设置值:zadd
# 在zs1中添加score为100的a 
zadd zs1 100 a 
# 添加200的b 300的c 150的d 
zadd zs1 200 b 300 c 150 d
取值:zrange(根据排名返回);zrangebyscore(根据值的大小范围返回,从小到大与zrevrangebyscore(从大到小)
# 顺序是按照score从小到大 
# 全取 
zrange zs1 0 -1 
# 取第一个 
zrange zs1 0 0 
# 全取显示source 
zrange zs1 0 -1 withscores 
# 返回score在100到200的值 
zrangebyscore zs1 100 200 
# 返回score在200到100的值 
zrevrangebyscore zs1 200 100
zincrby:增加score
# 把a队友的score+50 
zincrby zs1 50 a
zrem:删除
# 删除 zs1中的a 
zrem zs1 a
zrank:查看排名
zrank zs1 a
zcount:查看满足score大小范围内的值
# 查看score在100到200内的值的数量 
zcount zs1 100 200

7.配置文件

发现就一个有用的,部署时配到硬盘,设置密码,数据库数量,后台进程启用,和是否支持远程连接都不太重要。
logfile参数:配置生成log日志文件位置

 

 

posted @ 2022-07-19 22:44  Abandoned_Software  阅读(30)  评论(0编辑  收藏  举报