1. 字符串(String)
简介
- 概念:这是最简单的数据类型,可以存储字符串、整数或浮点数。
- 特点:支持原子操作,如递增和递减数值。
示例
# 设置一个键值对
SET mykey "Hello, Redis!"
# 获取该键的值
GET mykey
# 输出: "Hello, Redis!"
# 将字符串解释为整数并递增
INCR mycounter
# 如果mycounter之前不存在,则初始化为0后递增,结果为1
# 递增指定数量
INCRBY mycounter 5
# 结果为6
# 浮点数递增
INCRBYFLOAT myfloat 0.5
# 如果myfloat之前不存在,则初始化为0后递增,结果为0.5
2. 哈希(Hash)
简介
- 概念:类似于编程语言中的哈希表或字典,它允许你在一个键下存储多个字段-值对。
- 特点:适合存储对象属性,减少内存占用。
示例
# 创建一个用户记录
HMSET user:1000 name "Alice" age 30 city "Beijing"
# 获取所有字段及其值
HGETALL user:1000
# 输出:
# 1) "name"
# 2) "Alice"
# 3) "age"
# 4) "30"
# 5) "city"
# 6) "Beijing"
# 获取单个字段的值
HGET user:1000 name
# 输出: "Alice"
# 更新某个字段的值
HSET user:1000 age 31
3. 列表(List)
简介
- 概念:有序集合,元素按照插入顺序排列,支持从两端高效地添加和移除元素。
- 特点:非常适合实现队列和栈结构。
示例
# 向列表尾部添加元素
RPUSH mylist "item1"
RPUSH mylist "item2"
RPUSH mylist "item3"
# 获取整个列表
LRANGE mylist 0 -1
# 输出: ["item1", "item2", "item3"]
# 从列表头部弹出元素
LPOP mylist
# 输出: "item1"
# 从列表尾部弹出元素
RPOP mylist
# 输出: "item3"
4. 集合(Set)
简介
- 概念:无序且不允许重复元素的集合。
- 特点:用于成员测试、交集、并集等集合运算。
示例
# 添加元素到集合
SADD myset "apple"
SADD myset "banana"
SADD myset "orange"
# 检查元素是否存在于集合中
SISMEMBER myset "banana"
# 输出: (integer) 1
# 获取所有元素
SMEMBERS myset
# 输出: ["apple", "banana", "orange"]
# 计算两个集合的交集
SINTER set1 set2
5. 有序集合(Sorted Set)
简介
- 概念:类似集合,但每个元素关联一个分数,元素按分数排序。
- 特点:非常适合排行榜或优先级队列的应用场景。
示例
# 添加带分数的元素
ZADD myzset 1 "one"
ZADD myzset 2 "two"
ZADD myzset 3 "three"
# 获取按分数排序的所有元素
ZRANGE myzset 0 -1 WITHSCORES
# 输出:
# 1) "one"
# 2) "1"
# 3) "two"
# 4) "2"
# 5) "three"
# 6) "3"
# 根据分数范围获取元素
ZRANGEBYSCORE myzset 1 2 WITHSCORES
# 输出:
# 1) "one"
# 2) "1"
# 3) "two"
# 4) "2"
Redis 的数据类型涵盖了常见的需求,包括简单的键值对存储、复杂对象建模、队列管理以及集合运算等。选择合适的数据类型不仅能简化代码逻辑,还能显著提升应用的性能和可维护性。以下是一些使用建议:
- 字符串:适用于简单的键值对存储和计数器。
- 哈希:适合表示对象或记录,尤其是当对象有多个属性时。
- 列表:非常适合实现消息队列或日志系统。
- 集合:用于去重和集合运算,如社交网络中的好友关系处理。
- 有序集合:非常适合排行榜或基于权重的选择机制。