Redis 支持多种数据类型,每种数据类型都有其特定的用途和优势。以下是 Redis 中主要数据类型的介绍:
1. String(字符串)
介绍:最基本的 Redis 数据类型,通常用于缓存和存储经常需要读取的数据。
示例:
设置键值对
SET key "value"
获取值
GET key
递增整数值
INCR counter
常用命令
2. List(列表)
介绍:一个链表结构,可以在列表的头部或尾部添加/删除元素。
示例:
在列表左侧插入元素
LPUSH mylist "one"
在列表右侧插入元素
RPUSH mylist "two"
获取列表中的元素
LRANGE mylist 0 -1
常用命令
3. Hash(哈希)
介绍:一个键值对的集合,其中每个键都是唯一的字符串,而每个值可以是字符串、列表、集合等类型。
示例:
设置哈希中的字段
HSET myhash field1 "Hello"
获取哈希中的字段值
HGET myhash field1
获取哈希中所有的字段和值
HGETALL myhash
常用命令
4. Set(集合)
介绍:一个无序的字符串集合,成员是唯一的,不重复。
示例:
添加元素到集合
SADD myset "member1"
检查元素是否在集合中
SISMEMBER myset "member1"
获取集合中的所有元素
SMEMBERS myset
常用命令
5. Sorted Set(有序集合)
介绍:与集合类似,但每个元素都会关联一个分数(或称为“score”),用于排序。
示例:
添加元素到有序集合,并指定分数
ZADD mysortedset 1 "one"
ZADD mysortedset 2 "two"
获取有序集合中的所有元素(按分数排序)
ZRANGE mysortedset 0 -1 WITHSCORES
获取分数在指定范围内的元素
ZRANGEBYSCORE mysortedset 1 2 WITHSCORES
常用命令
6. HyperLogLogs(基数统计)
介绍:用于估算集合中不同元素的数量,但不需要存储这些元素本身。它使用概率算法来估算,因此结果可能不是完全准确的,但内存使用非常少。
示例:
添加元素到 HyperLogLog
PFADD hll_key "element1" "element2" ...
估算 HyperLogLog 中的基数
PFCOUNT hll_key
常用命令
7. Bitmap(位图)
介绍:Bitmap(位图)并不是直接提供的一个命令或数据结构,但 Redis 的字符串(string)类型可以用来实现位图(Bitmaps)的功能。位图是一个用于表示一组二进制位的数据结构,常用于高效地进行位运算,如统计用户签到、统计独立用户数等场景。
在 Redis 中,你可以使用 SETBIT、GETBIT、BITCOUNT 等命令来操作位图。
SETBIT key offset value 命令用于对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
GETBIT key offset 命令用于对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
BITCOUNT key [start] [end] 命令用于计算给定字符串中,被设置为 1 的比特位的数量。
设置位图
SETBIT test 7 1
SETBIT test 10 1
SETBIT test 15 0
SETBIT test 30 1
获取位图上的位
GETBIT test 7 结果输出: 1
GETBIT test 10 结果输出: 1
GETBIT test 15 结果输出: 0
GETBIT test 30 结果输出: 1
计算位图中被设置为 1 的位数
BITCOUNT test 结果输出: 3
BITCOUNT test 0 10 结果输出: 2
8. Geospatial(地理空间)
介绍:Redis 支持存储地理位置信息,并可以基于位置信息进行查询(例如,查找附近的位置)。
示例:
添加地理位置
GEOADD Sicily 13.3615386 38.115556 "Palermo" 15.087269 37.502669 "Catania"
获取两个位置之间的距离
GEODIST Sicily Palermo Catania km
获取位置范围内的所有其他位置
GEORADIUS Sicily 15 37 100 km WITHDIST
9. Stream(流)
介绍:Redis Stream 是 Redis 5.0 引入的一种新数据结构,用于实现消息队列。它允许消费者按照消息的插入顺序读取消息,并支持持久化。
示例:
添加消息到流
XADD mystream * field1 value1 field2 value2
读取流中的消息
XRANGE mystream