慢查询
生命周期
慢查询发生在执行命令阶段
客户端超时不一定慢查询,但查询是客户端超时的一个可能因素
三个命令
slowlog get[n]:获取慢查询队列
slowlog len:获取慢查询队列长度
- slowlog reset:清空慢查询队列
两个配置
- config get slowlog-max-len = 128
- config get slowlog -log-slower-than = 10000
pipeline(流水线)
命令 | N个命令操作 | 1次pipeline(n个命令) |
---|---|---|
时间 | n次网络+n次命令 | 1次网络+n次命令 |
数据量 | 1条命令 | n条命令 |
Redis的命令时间是微秒级别
pipeline每次条数要控制(网络)
无pipeline实现
1 | public class Pipe |
1 | 程序运行时间:828ms |
pipeline实现
1 | @Test |
1 | 程序运行时间:56ms |
发布订阅
publish(发布命令)publish sohu:tv “hello world”
subcirber(订阅) subcirber sohu:tv
消息队列
Bitmap(位图)
setbit key offset value 给位图指定索引设定值
getbit key offset 获取位图指定索引值
bitcount key [start end] 获取位图指定范围,单位为字节
bitop op destkey key [key…] 做多个Bitmap的and(交集)、or(并集)、not(非)、xor(异或)操作并将结果保存在destkey中
HyperLogLog
基于HyperLogLog算法:极小空间完成独立数量统计
本质还是字符串
命令
pfadd key element [element …]:向hyperloglog添加元素
pfcount key [key …]:计算hyperloglog的独立总数
pfmerge destkey sourcekey [sourcekey …] :合并多个hyperloglog
GEO
地理信息定位:存储经纬度,计算两地距离,范围计算等
geo key longitude latitude member [longitude latitude member …] 增加地理位置信息
geopos key member [menber] 获取地理位置信息