Redis 从入门到入土⑦:高级特性
一、慢查询
1. Redis 请求过程
慢查询发生在 执行命令阶段
2. 结构
保存在内存中的长度固定的 先进先出队列
3. 配置
slowlog-max-len: 最大长度,默认为 128
slowlog-log-slower-than=1000: 超过 1s 则加入慢查队列中,默认为 10000
1 | // 动态配置 |
4. 命令
slowlog get [n]: 获取慢查询队列,n 为条数
slowlog len: 获取慢查询队列长度
slowlog reset: 清空慢查询队列
二、流水线(pipeline)
作用: 解决批量执行 hset、hget 等操作的问题
非原子命令
只能作用在一个 Redis 节点上
例:
1 | Jedis jedis = new Jedis("127.0.0.1", 6379); |
三、位图(Bitmap)
setbit key offset value: 给位图指定索引设置值,返回之前位的值
例:
get key offset: 返回位图指定索引的值
bitcount key [start] [end]: 获取位图指定范围值为 1 的个数
bitops key targetBit [start] [end]: 计算位图指定范围内第一个值等于 targetBit 的位置
bitop op destkey key [key…]: 把多个 Bitmap 的 与、或、非、异或 操作的结果保存在 destkey 中
- op: and(与)、or(或)、not(非)、xor(异或)
四、HyperLogLog
概述: 以极小的空间统计独立数量,本质还是 string 类型
1. 命令
pfadd key element [element…]: 添加元素
pfcount key [key…]: 计算总数
pfmerge destkey key [key…]: 合并多个 hyperloglog
2. 缺陷
错误率: 0.81%
五、GEO
概述: 地理信息定位。存储经纬度,计算两地距离和范围等,本质是 zset 类型
1. 命令
geo key longitude latitude member [longitude latitude member…]: 添加地理位置信息
geopos key member: 获取地理位置信息
geodist key member1 member2 [unit]: 获取两个地理位置的距离
- unit: m、km、mi、ft