Redis其他功能-慢查询,流水线,发布订阅,位图等

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/love905661433/article/details/82056697

慢查询

生命周期

  • 发送命令
  • 排队
  • 执行命令
  • 返回结果

在”执行命令”阶段较慢的才是慢查询

相关配置

特点:

  • 保存在一个先进先出队列中
  • 固定长度
  • 保存在内存中

slowlog-max-len : 慢查询队列长度

slowlog-log-slower-than : 慢查询阈值(单位 : 微秒)

0 记录所有命令

<0 不记录任何命令

配置方法

  • 默认值
    • config get slowlog-max-len = 128
    • config get slowlog-log-slower-than = 10000
  • 修改配置文件重启–不建议使用,仅初次启动redis时使用
  • 动态配置
    • config set slowlog-max-len = 1000
    • config set slowlog-log-slower-than = 1000

相关命令

  • showlog get n : 获取慢查询队列,n表示获取n条记录
  • showlog len : 获取慢查询队列长度
  • showlog reset : 清空慢查询队列

Tips

  • slowlog-log-slower-than不要设置过大,默认10ms,通常设置1ms
  • slowlog-max-len不要设置过小,默认128,通常设置1000左右
  • 理解redis命令执行的生命周期
  • 定期持久化慢查询

流水线(pipeline)

将多次命令打包统一传输到redis上去执行,主要是因为对redis进行操作时,redis本身执行速度是很快的,在复杂的网络环境中,通常大量的时间消耗在了网络传输中,pipeline就是通过将多个命令打包的方式,减少了网络传输次数

使用建议

  • 注意每次pipeline携带数据量
  • pipeline每次只能作用在一个Redis节点上
  • M操作与pipeline区别

发布订阅

角色

  • 发布者(publisher)
  • 订阅者(subscriber)
  • 频道(channel)

命令

  • publish channel message : 向channel频道发布消息,返回该频道的订阅者个数
  • subscribe channel : 订阅一个或多个频道
  • unsubscribe channel : 取消订阅
  • psubscribe [pattern] : 可以按照模式订阅
  • punsubscribe [pattern] : 可以按照模式退订

位图(Bitmap)

命令

  • setbit key offset value : 给位图指定索引设置值,offset偏移量之前未设置的位会补0
  • getbit key offset value : 获取位图指定索引的值
  • bitcount key [start end] : 获取位图指定范围位值为1的个数(start-end,单位:字节,如果不指定就是获取全部)
  • bittop and(交集) | or(并集) | not(非) | xor(异或) destkey [key…] : 做多个Bitmap的and,or,not,xor操作并将结果保存到destkey中
  • bitpos key targetBit start end : 计算位图指定范围(start-end,单位字节,不指定获取全部),第一个偏移量的对应的值等于targetBit的位置

简单使用

  • 独立用户统计

Tips

  • type=string,最大512MB
  • 注意setbit时的偏移量,可能有较大耗时

HyperLogLog

本质还是string

命令

  • pfadd key element… : 向hyperloglog添加元素,可多个
  • pfcount key … : 计算hyperloglog的独立总数
  • pfmerge destkey sourcekey … : 合并多个hyperlloglog

Tips

  • 有错误率(0.81%)
  • 无法取出单条数据

地理信息定位(GEO)

用于存储经纬度,计算两地距离,范围计算等

命令

  • geoadd key longitude latitude member : 增加地理位置信息
  • geopos key member… :获取地理位置信息
  • geodist key member1 member2 [unit] : 获取两个地理位置的距离
    • unit : m(米), km(千米), mi(英里), ft(尺)
  • georadius : 获取指定位置内地理位置信息集合

这里写图片描述

Tips

  • since 3.2+
  • type GeoKey = zset,GEO是使用zset实现的
  • 没有删除API : 可以使用zset的命令对GEO进行删除操作

猜你喜欢

转载自blog.csdn.net/love905661433/article/details/82056697