慢查询
redis生命周期如下图 因为Redis是单线程的,相关命令发送请求以后需要排队
生命周期.png慢查询发生在第三阶段,执行命令阶段
慢查询只是导致客户端超时的一种可能因素
配置
慢查询是一个先进先出的队列。保存在内存中。会随着重启而消失
如果被列为慢查询他会进入(记录)一个先进先出的队列。且队列具有固定长度。
默认值:
config get slowlog-max-len = 128 默认慢队列长度
config get slowlog-log-slower-than = 10000 10ms
命令:
slowlog get [n] :获取慢查询队列
slowlog len :获取慢查询队列长度
slowlog reset:清空慢查询队列
运维经验
因为redis是qps万级别的,所以处理速度是微秒级,我们将1ms算为慢查询范围。
长度设置为1000防止丢失慢查询数据 128太小了
定期持久化慢查询
Pipeline 流水线
流水线就是将多个命令通过一次网络请求(占用一次网络时间)发送给服务端处理,然后批量返回的操作。
效果对比.pngredis的命令时间是微秒级别,执行速度远快于一次网络请求
无流水线操作.png 使用流水线操作与M操作的区别(批量)
M操作是原子性的,是一条命令
流水线是非原子性的,可以切割成多条,如上图为100条流水线,中间可以穿插其他命令。
发布订阅
各种MQ 不香吗!
bitmap 位图
通俗:设置数据上某位bit上面修改1和0数据
用途.png 10万用户统计.png是否节省空间需要通过结算得出。
GEO
地理位置计算
网友评论