Bootstrap

【Redis 】Bitmap 使用

Redis Bitmap介绍

Redis Bitmap 是一种特殊的数据类型,它通过字符串类型键来存储一系列连续的二进制位(bits),每个位可以独立地表示一个布尔值(0 或 1)。这种数据结构非常适合用于存储和操作大量二值状态的数据,尤其在需要高效空间利用率和特定位操作场景中表现出色。

Bitmap 的应用场景

用户签到系统

Bitmap 可以用于记录用户的签到情况。每个用户对应一个 Bitmap,每一位表示一天的签到状态。

【例】用户 user1 在 2024 年 11 月 25 日签到:

SETBIT user1:20241125 0 1
统计活跃用户

Bitmap 可以用于统计一段时间内的活跃用户。每个用户对应一个 Bitmap,每一位表示一天的活跃状态。

【例】统计 2024 年 11 月 20 日到 2024 年 11 月 27 日的活跃用户数:

BITCOUNT user:active:20241120
BITCOUNT user:active:20241121
...
BITCOUNT user:active:20241127
布隆过滤器

Bitmap 可以用于实现布隆过滤器,用于判断一个元素是否存在于一个集合中。

 Bitmap 的命令

设置位

使用 SETBIT 命令来设置 Bitmap 中的某一位。

  • key:Bitmap 的键名。

  • offset:要设置的位的偏移量(从 0 开始)。

  • value:要设置的值(0 或 1)。

SETBIT key offset value
SETBIT mybitmap 10 1
获取位

使用 GETBIT 命令来获取 Bitmap 中的某一位的值。

GETBIT key offset
GETBIT mybitmap 10
统计位

使用 BITCOUNT 命令来统计 Bitmap 中值为 1 的位的数量。

  • start 和 end 是可选参数,用于指定统计的范围(以字节为单位)。

BITCOUNT key [start end]
BITCOUNT mybitmap
位运算

Bitmap 进行位运算,包括 ANDORXOR 和 NOT

  • operation:可以是 ANDORXOR 或 NOT

  • destkey:运算结果存储的目标键。

  • key:参与运算的 Bitmap 键。

BITOP operation destkey key [key ...]



;