redis(七):redis的一些特殊功能-慢查询、订阅发布、位图、hyperloglog、GEO

1. 慢查询

如图,这是客户端请求服务器端的一个生命周期。慢查询是指,查询命令的执行时间较慢,超过了设定好的阈值(系统默认10s)。像我们使用的keys *命令就很有可能导致慢查询。
在这里插入图片描述
慢查询队列的两个参数:
slowlog-log-slower-than:表示队列的阈值,单位微妙
slowlog-max-len:表示慢查询队列的长度
在这里插入图片描述
慢查询命令
在这里插入图片描述

2. 发布订阅模型

在这里插入图片描述
开启一个窗口订阅alibaba:

127.0.0.1:6379> publish alibaba "hello world"
(integer) 0
127.0.0.1:6379> subscribe alibaba
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "alibaba"
3) (integer) 1
1) "message"
2) "alibaba"
3) "hello world"
1) "message"
2) "alibaba"
3) "hello world2"

开启一个窗口发送给alibaba

127.0.0.1:6379> publish alibaba "hello world"
(integer) 1
127.0.0.1:6379>  publish alibaba "hello world2"
(integer) 1

因为redis的消息队列实际上是通过list实现的,故发布一个消息,只有一个客户端可以收到,如果有多个客户端同时订阅该频道就会出现"抢"的状况.
在这里插入图片描述

3.位图

如图是big的位图,下面的是对应的ASCII。
在这里插入图片描述

127.0.0.1:6379> set hello big
OK
127.0.0.1:6379> getbit hello 0 # 获取第1位,是0,如上图
(integer) 0
127.0.0.1:6379> getbit hello 1
(integer) 1
127.0.0.1:6379>  getbit hello 2
(integer) 
127.0.0.1:6379> setbit hello 7 1 # 设置第7位是1,b就变成了c
(integer) 0
127.0.0.1:6379> get hello
"cig"
127.0.0.1:6379> bitcount hello 0 -1 # 获取位图中1的个数
(integer) 13

4.hyperloglog

是一个算法。相当于用时间换空间的思路减少对内存的占用。

在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

什么是基数?
比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。

命令
PFADD key element [element …] 添加指定元素到 HyperLogLog 中。
PFCOUNT key [key …] 返回给定 HyperLogLog 的基数估算值。这是一个估算值,(错误率0.81%)
PFMERGE destkey sourcekey [sourcekey …] 将多个 HyperLogLog 合并为一个 HyperLogLog

127.0.0.1:6379> pfadd key3 1 3 5 7 8 3 5
(integer) 1
127.0.0.1:6379> pfcount key3
(integer) 5

5.GEO

在这里插入图片描述

127.0.0.1:6379> geoadd cityGeo 116.405285 39.904989 "北京" # 添加城市
(integer) 1
127.0.0.1:6379> geoadd cityGeo 121.472644 31.231706 "上海"
(integer) 1
127.0.0.1:6379> geopos cityGeo 北京 # 获取城市经纬度
1) 1) "116.40528291463851929"
   2) "39.9049884229125027"
127.0.0.1:6379> geodist cityGeo 北京 上海 #  获取两个城市的距离
"1067597.9668"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值