Redis基本数据类型
类型 | 用途 |
---|---|
BitMap(2.2) | 状态统计:签到/连续签到、登录状态 |
HyperLogLog (2.8.9) | 海量数据基数统计,如网页 UV 计数 |
GEO (3.2 ) | 地理位置信息相关,附近地点查找、打车推荐 |
Stream(5.0) | 消息队列(专属),适用于事件日志处理 |
BitMap类型
信息
Redis 的 Bitmap(位图)并不是一个独立的数据类型,而是基于 Redis 的 String 类型实现的一组面向位的操作。Bitmap 可以被看作是一个以位为单位的数组,其中每个单元只能存储 0 或 1。在 Redis 中,这种数据结构非常适合用来处理需要高效空间利用率和快速操作的二值状态场景。
命令 | 描述 |
---|---|
SETBIT key offset value | 设置指定偏移量上的位值(0 或 1)。返回设置前的旧值。如果键不存在,则会创建一个新的字符串值。 |
GETBIT key offset | 获取指定偏移量上的位值(0 或 1)。如果键或偏移量不存在,则返回 0。 |
BITCOUNT key start end | 统计指定范围内值为 1 的位的数量。可以指定范围,不指定则统计整个键。 |
BITOP [operations] [result] [key1] [keyn… | 对一个或多个 Bitmap 进行位运算(AND、OR、XOR、NOT),并将结果存储到新的 Bitmap 中。 |
BITPOS [key] [value] | 查找指定范围内第一个值为 0 或 1 的位的位置。 |
HyperLogLog(HLL)
信息
HyperLogLog(HLL) 是一种 概率性数据结构,用于 估计一个集合中不同元素的数量(即基数)。它以极小的内存消耗实现对海量数据的基数估算,适用于大数据场景下的去重计数。
命令 | 描述 |
---|---|
PFADD key element [element ...] | 向指定的 HyperLogLog 中添加一个或多个元素。这些元素会被用于基数估计。如果 key 不存在,则自动创建一个新的 HyperLogLog 结构。返回值为 1 表示 HyperLogLog 的内部状态发生了变化(即可能新增了元素),0 表示没有变化。 |
PFCOUNT key [key ...] | 获取一个或多个 HyperLogLog 的基数估计值。当提供多个 key 时,会先将它们合并后计算总基数。结果是一个近似值,默认误差率约为 0.81%。 |
PFMERGE destkey sourcekey [sourcekey ...] | 将多个 HyperLogLog 合并为一个新的 HyperLogLog,并存储在 destkey 中。合并后的结构可用于进一步的基数估计。该命令不会修改原始的 source keys。 |
GEO
信息
用于存储和操作地理位置信息。它本质上是基于 Sorted Set(有序集合) 的封装,使用 GeoHash 编码 来表示经纬度坐标,可以高效地进行附近地点查询、两点距离计算等操作。
命令 | 格式 | 描述 |
---|---|---|
GEOADD | GEOADD key longitude latitude member [longitude latitude member ...] | 将指定的地理空间位置(经度、纬度、成员名)添加到 key 对应的地理空间索引中。如果该成员已存在,则更新其位置。 |
GEOPOS | GEOPOS key member [member ...] | 获取一个或多个成员的经纬度。返回值是一个数组,包含每个成员的 [经度, 纬度] ,若成员不存在则为 (nil) 。 |
GEODIST | GEODIST key member1 member2 [unit] | 返回两个成员之间的距离。单位可选:m (米)、km (千米)、mi (英里)、ft (英尺)。默认单位是米。 |
GEORADIUS | GEORADIUS key longitude latitude radius unit [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC 'GEORADIUS 键经度纬度半径单位 [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC] | DESC] [STORE key] [STOREDIST key]` DESC] [STORE key] [STOREDIST key]' |
GEORADIUSBYMEMBER | `GEORADIUSBYMEMBER key member radius unit [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC 'GEORADIUSBYMEMBER 关键成员半径单位 [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT 计数] [ASC | DESC] [STORE key] [STOREDIST key]` DESC] [STORE key] [STOREDIST key]' |
GEOHASH | GEOHASH key member [member ...] | 返回一个或多个成员的 GeoHash 字符串编码。可用于将经纬度转换为字符串表示,便于缓存或传输。 |
Stream
信息
Stream实现高效的消息队列功能。它提供了一种将数据以流的形式持久化到 Redis 中的方法,并支持复杂的消费者组(consumer groups)机制,允许多个客户端高效地读取和处理消息。
命令 | 格式 | 描述 |
---|---|---|
XADD | XADD key ID field value [field value ...] | 向流中添加一条新消息。ID 可以使用 * 表示自动产生。 |
XRANGE | XRANGE key start end [COUNT count] | 获取流中从 start 到 end 范围内的消息。- 和 + 分别表示最小和最大可能的ID。 |
XREAD | XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...] | 读取一个或多个流中的消息,支持阻塞等待新消息。 |
XGROUP CREATE | XGROUP CREATE key groupName id [MKSTREAM] | 在指定的流上创建一个新的消费者组。id 指定了从哪条消息开始消费。 |
XREADGROUP | XREADGROUP GROUP groupName consumerName [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...] | 读取属于某个消费者组的消息。 |
XACK | XACK key groupName ID [ID ...] | 确认消费者组中的某条或多条消息已被成功处理。 |
XDEL | XDEL key ID [ID ...] | 删除流中的特定消息。 |
XLEN | XLEN key | 返回流中消息的数量。 |