在 Redis 中,位图(bitmap)是通过字符串(string)类型来实现的,具体来说,位图是存储在 Redis 字符串中的二进制位数据。 Redis 字符串一般采用动态字符串实现,最大长度可以达到 512MB。对于位图来说,每个二进制位代表一个状态或标记,可以表示非常多的状态信息,同时占用的存储空间很小。
当使用 SETBIT 命令设置位图时,需要指定位图的键名和偏移量(offset),并传递一个值(value)来表示要设置的位的值。例如,可以使用以下命令将 user_status 位图中第 12345 位设置为 1,表示该用户在线:
SETBIT user_status 12345 1
上述命令将会在 Redis 中创建一个 key 为 "user_status" 的字符串,并将其转换为位图类型。然后,它会将 user_status 位图中的第 12345 位设置为 1,表示该用户在线。如果该位原本的值为 0,那么 SETBIT 命令会将其值设置为 1;如果该位原本的值为 1,那么 SETBIT 命令则不会产生任何影响。
因此,标记的字符串实际上就是 Redis 字符串,其中存储了二进制位数据,表示需要标记的状态信息。通过使用位运算和 Redis 提供的位操作命令,可以高效地对位图进行设置、获取、计数和逻辑运算等操作。
标签:status,Redis,SETBIT,bitmap,user,字符串,位图,底层 From: https://www.cnblogs.com/apelet/p/18032432