一、通用指令
1、查询所有key:key *
2、查询所有以he开头的key:keys he*
3、查询长度为三位的key,并且第三个字符的范围是h到z:keys he[h-z]
4、查询长度为三位的key,并且第三个字符任意:keys he?
5、keys命令一般不在生产环境中使用,生产环境的key很多,时间复杂度为o(n),可以换用scan命令
6、查询key的总数:dbsize => redis内置了计数器,插入或删除数据时计数器的值会自动更改,所以该操作的时间复杂度是o(1)
7、查询key是否存在:exists key => 存在返回1,不存在返回0
8、删除key:del key => 删除成功返回1,key不存在返回0
9、设置key的过期时间:expire key seconds
10、查询key的剩余过期:ttl key
11、取消key的过期时间:persist key
12、查询key的类型:type key
13、查看详细信息(内存,cpu,主从相关等):info
14、查看正在连接的会话:client list
15、关闭会话:client kill ip:port
16、清空所有:flushall
17、清空当前库:flushdb
18、选择指定库(0~15):select dbnum
19、开启日志记录模式(挂起):monitor
二、字符串类型指令
1、可以很复杂,比如json字符串,但是大小不能超过512M,非常适合用于缓存从sql中读出的数据
2、可以是数字,还可以是二进制(位图)
3、写入
①新增或修改,无论key是否存在都生效:set key value
②只新增,key不存在时才生效:setnx key value => set name lqz nx
③只修改,key存在时才生效:set name lqz xx
4、查询:get key
5、删除:del key
6、自增1:incr key
7、自减1:decr key
8、自增count:incrby key count
9、自增count:decrby key count
10、单线程无冲突,天然适合做计数器,可用于统计访问量,分布式生成编号等
11、批量写入:mset key1 value1 key2 value2 key3 value3
12、批量查询:mget key1 key2 key3
13、x次get和1次mget了x个数据的区别
①x次get:x次网络时间+x次指令的时间
②1次mget了x个数据:1次网络时间+x次指令的时间
14、修改并查询旧值:getset key newvalue
15、新值拼接在旧值后面:append key newvalue
16、查询字符串长度:strlen key
17、自增decimal(负值代表自减):increbyfloat key decimal
18、从指定的index插入新值:setrange key index value
19、查询指定index片段的值:getrange key start end
三、哈希类型指令
1、写入
①新增或修改,无论field是否存在都生效:hset key field value
②只新增,field不存在时才生效:hsetnx key field value
2、查询:hget key field
3、删除:hdel key field
4、查询field是否存在:hexists key field
5、查询field数量:hlen key
6、批量写入:hmset key field1 value1 field2 value2 field3 value3
7、批量查询:hmget key field1 field2 field3
8、查询所有field和value:hgetall key
9、查询所有field:hkeys key
10、查询所有value:hvals key
11、指定field自增count:hincrby key field count
12、指定field自增decimal:hincrbyfloat key field decimal
四、列表类型指令
1、从右侧批量插入:rpush key value1 value2 value3
2、从左侧批量插入:lpush key value1 value2 value3
3、从指定value的前侧或后侧插入:linsert key before|after value newvalue
4、从右侧弹出一个:lpop key
5、从左侧弹出一个:rpop key
6、删除:lrem key count value
①count大于0:从左侧开始,删除最多count个值为value的项
②count小于0:从右侧开始,删除最多count的绝对个值为value的项
③count等于0:删除所有值为value的项
7、截留index范围的项(左闭右闭):ltrim key start end
8、查询index范围的项(左闭右闭):lrange key start end
9、index为-1代表最后一项
10、查询指定index的value:lindex key index
11、查询列表长度:llen key
12、修改指定index的value:lset key index newvalue
13、从右侧阻塞式弹出:brpop key timeout
14、从左侧阻塞式弹出:blpop key timeout
五、集合类型指令
1、添加element,若存在则添加无效:sadd key element
2、删除element:srem key element
3、查询集合element个数:scard key
4、查询element是否存在于集合中:sismember key element
5、从集合中随机查询count个element:srandmember key count
6、从集合中随机弹出一个element:spop key
7、查询集合所有的element:smembers key
8、查询key1的相较于key2的差集:sdiff key1 key2
9、查询key1与key2交集:sinter key1 key2
10、查询key1与key2的并集:sunion key1 kye2
11、将查询结果放在新集合中:sdiff|sinter|suion key1 key2 store newkey
12、应用场景:标签,抽奖,点赞,关注,共同好友等
六、有序集合类型指令:
1、用score数值来表示顺序,从左到右按照score的由小到大
2、添加element:zadd key score element => score可以重复,可以多个同时添加,element不能重复
3、删除element:zrem key element => 可以多个同时删除
4、查询指定element的score:zscore key element
5、增加(负值减少)element的score:zincrby key increscore element
6、查询element个数:zcard key
7、查询所有element的rank(score由小到大):zrank key element => zrevrank key element(反序)
8、查询指定index范围element的rank(左闭右闭,不带分数):zrange key start end => zrevrange key start end(反序)
9、查询指定index范围element的rank(左闭右闭,带分数):zrange key start end withscores => zrevrange key start end withscores(反序)
10、查询指定score范围的element(左闭右闭,不带分数):zrangebyscore key minscore maxscore => zrevrangebyscore key minscore maxscore(反序)
11、查询指定score范围的element(左闭右闭,带分数):zrangebyscore key minscore maxscore withscores => zrevrangebyscore key minscore maxscore withscores(反序)
12、查询指定score范围的element个数:zcount key minscore maxscore
13、删除指定rank范围的element:zremrangebyrank key minrank maxrank
14、删除指定score范围的element:zremrangebyscore key minscore maxscore
15、查询key1与key2交集:zinterstore key1 key2
16、查询key1与key2的并集:zunionstore key1 kye2