redis指令

一、通用指令

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

posted @ 2020-09-07 15:21  专业搬砖人士  阅读(343)  评论(0)    收藏  举报