“深入了解Redis缓存:探索Redis 6的新数据类型“

目录

1. 介绍

2. Bitmaps(可以称为字符串,专门进行位操作的字符串)

2.1 概念

2.2 setbit(设置Bitmaps中某个偏移量的值)

2.3 getbit(获取Bitmaps中某个偏移量的值)

2.4 bitcount(统计字符串被设置为1的bit数,访问过的用户为1,没有访问过的为0)

2.5 bitop(复合操作,将多种情况的操作结果保存在destkey中)

3. HyperLogLog(做基数处理,去重等..)

3.1 概念

3.2 pfadd(添加指定元素到HyperLogLog中)

3.3 pfcount(计算HLL的近似基数)

3.4 pfmerge(合并其它的key,进行计算等)

4. Geospatial(对经纬度,地理信息等操作)

4.1 概念

4.2 geadd(添加地理位置)

4.3 geopos(获取指定地区的坐标值)

4.4 geodist(获取两个位置之间的直线距离)

4.5 georadius(以给定的经纬度为中心,找出某一半径内的元素)


1. 介绍

在Redis 6中,有几种比较特殊且功能强大的数据结构:Bitmaps(位图)、HyperLogLog(超级对数日志)、Geospatial(地理空间)

1. Bitmaps(位图):

  • 作用:Bitmaps 是 Redis 中的一种非常紧凑和高效的数据结构,用来处理位操作相关的需求。
  • 用途:主要用于记录某些状态或者事件是否发生过,例如用户是否点击过某个按钮、某天是否有用户访问网站等。因为它可以节省大量内存,特别适合于需要高效率地记录大量布尔型状态的场景。

2. HyperLogLog(超级对数日志):

  • 作用:HyperLogLog 是一种概率性数据结构,用于统计元素的基数(唯一元素的数量),占用固定大小的内存空间。
  • 用途:适合于需要快速估计大数据集合中的唯一元素数量,例如统计网站的独立访客数、统计一周内不同IP地址访问网站的数量等。

3. Geospatial(地理空间):

  • 作用:Geospatial 是 Redis 提供的一种处理地理位置和坐标的数据结构,可以存储地理位置的经度和纬度,并支持相关的地理位置查询操作。
  • 用途:适合于需要存储和查询地理位置信息的应用场景,如附近的商家搜索、地点推荐等。

2. Bitmaps(可以称为字符串,专门进行位操作的字符串)

2.1 概念
  • Bitmaps本身不是数据类型,他只是字符串,专门进行位操作的字符串;

Bitmaps与set的区别:

提高了空间利用率,提高了cpu内存的利用率;

对比 setBitmaps 在存储独立用户空间方面的差异:

  • setBitmaps 存储独立用户空间对比
数据类型 一天 一个月 一年
set 400MB 12GB 144GB
Bitmaps 12.5MB 375MB 4.5GB
  • 备注
    • Bitmaps 并不是万能的。如果网站每天的独立访问用户很少(例如只有 10 万,大量的僵尸用户),则对比情况如下。
    • Bitmaps 在用户数量少的情况下不太适合,因为这时候大部分位都是 0,使其不太高效。
2.2 setbit(设置Bitmaps中某个偏移量的值)
  • SETBIT 命令用于设置 Bitmaps 中某个偏移量的值,可以将指定位置的位设置为 0 或 1;
    • <key>: Bitmaps 的键
    • <offset>: 偏移量,从 0 开始
    • <value>: 设置的值,只能是 0 或 1
SETBIT <key> <offset> <value>

# 设置键 `userbitmap` 在偏移量 5 处的位值为 1
127.0.0.1:6379> SETBIT userbitmap 5 1
(integer) 0

# 设置键 `userbitmap` 在偏移量 10 处的位值为 1
127.0.0.1:6379> SETBIT userbitmap 10 1
(integer) 0

# 设置键 `userbitmap` 在偏移量 5 处的位值为 0
127.0.0.1:6379> SETBIT userbitmap 5 0
(integer) 1

2.3 getbit(获取Bitmaps中某个偏移量的值)
  • GETBIT 命令用于获取 Bitmaps 中某个偏移量的值,返回该位的值(0 或 1);
    • <key>: Bitmaps 的键
    • <offset>: 偏移量,从 0 开始
GETBIT <key> <offset>

# 获取键 `userbitmap` 在偏移量 5 处的位值
127.0.0.1:6379> GETBIT userbitmap 5
(integer) 0

# 获取键 `userbitmap` 在偏移量 10 处的位值
127.0.0.1:6379> GETBIT userbitmap 10
(integer) 1

# 获取键 `userbitmap` 在偏移量 15 处的位值
127.0.0.1:6379> GETBIT userbitmap 15
(integer) 0

2.4 bitcount(统计字符串被设置为1的bit数,访问过的用户为1,没有访问过的为0)
  • BITCOUNT 命令用于统计 Bitmaps 中被设置为 1 的位的数量。该命令可以统计整个 Bitmaps 的 1 位数,也可以通过指定 startend 参数来统计特定范围内的 1 位数;
    • <key>: Bitmaps 的键
    • [start] (可选): 开始的字节下标,负数表示从末尾开始计算
    • [end] (可选): 结束的字节下标,负数表示从末尾开始计算
BITCOUNT <key> [start end]

# 统计键 `userbitmap` 中所有被设置为 1 的位的数量
127.0.0.1:6379> BITCOUNT userbitmap
(integer) 2

# 统计键 `userbitmap` 在字节 0 到字节 1 范围内被设置为 1 的位的数量
127.0.0.1:6379&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值