一:慢查询
(一)生命周期
1.客户端发送命令到Redis
2.Redis服务器处理发送命令(Redis为单线程,命令需要排队执行)
3.执行命令
4.返回执行结果
(二)说明
(1)慢查询发生在第三阶段
(2)客户端超时不一定为慢查询,但慢查询是客户端超时的一个可能元素
(三)配置
(1). slowlog-max-len
1.先进先出队列
2.固定长度
3.保存在内存中
(2)slowlog-log-slower-than
1.慢查询阀值
2。slowlog-log-slower-than,记录所有命令
3.slowlog-log-slower-than<0,不记录任何命令
(3)配置方法
1.默认值
config get slowlog-max-len = 128
configget slowlog-log-slower-than = 10000
2.修改配置文件重启
3.动态配置
config set slower-max-len 10000
config set slowlog-log-slower-than 1000
(四)慢查询命令
1.slow get [n] : 获取慢查询队列
2.slowlog len :获取慢查询队列长度
3.slowlog reset :清空慢查询队列
(五)注意事项
1.slowlog-max-len不要设置过大,默认10ms,若设置过大,只有超过这个时间,慢查询才会记录这个命令,影像Redis的的响应
2.slowlog-log-slower-than 不要设置过小,通常设置1000左右,队列存在内存当中,随着慢查询的增加,队列的先进先出策略,不利于分析历史问题
3.定期持久化慢查询
二:pipeline(流水线)
1.将N个命令打包,发送值服务端执行
2.Redis的命令时间是微秒级别
3.pipeline每次条数限制
4.非原子执行,返回顺序返回
5.注意每次pipeline的携带数据量
6.pipeline每次只能作用在一个Redis节点上
三:发布订阅
1.角色
发布者:客户端
订阅者:可订阅多个频道
频道:Redis Server
发布之后所有的订阅者都可以收到
2.模型
无法做一个消息堆积,无法获取历史消息
3.API
发布命令 pulish channel message 返回订阅者个数
订阅者 subscribe [channel] #一个或多个
取消订阅 unsubscribe [channel]# 一个或多个
按照模式订阅 psubscribe [pattern...]
退订指定的模式 punsubscribe [pattern..]
列出至少有一个订阅者的频道 pubsub channels
列出给定频道的订阅者数量 pubsub numsun [channel..]
列出被订阅模式的数量 pubsub numpat
4.消息队列
发布消息之后只有一个收到
四:Bitmap
1.定义
位图
2.API
setbit key offset value 给位图指定索引设置值 offset偏移量
getbit key offset 获取指定偏移量的值
bitcount key [start end] 获取位图指定范围(start到end,单位为字节,如果不指定就是获取全部)位值为1 的个数
bitop op destkey key [key...] 做多个bitmap的and(交集),or(并集),not(非),xor(异或)操作并将操作结果报存到destkey中
bitpos key targetBit [start][end] 计算位图指定范围(从start 到end,单位为字节,如果不指定就是获取全部)第一个偏移量对应的值等于targetBit的位置
3.使用
独立用户统计
4.使用经验
1.type = string ,最大512MB
2.注意setbit时的偏移量,可能会有较大的耗时
3.位图不是绝对好,在合适的场景使用合适的工具