Redis 提供了多种数据类型,每种数据类型都有其特定的用途和操作命令。以下是Redis五种基本数据类型及其使用示例与应用场景:
- String(字符串)
- 示例:
SET key value # 设置键值对
GET key # 获取键对应的值
INCR key # 自增整数值(适合计数器场景)
MGET key1 key2 # 获取多个键的值
- 应用场景:
- 缓存:存储用户信息、页面内容等。
- 计数器:统计访问量、点赞数、积分、库存数量等。
- 会话存储:保存session ID或其他会话相关数据。
- Hash(哈希)
- 示例:
HSET user:1 name "John" age 30
HMSET user:1 name John gender Male age 30
HGETALL user:1 # 获取整个哈希表内容
HGET user:1 age # 获取指定字段的值
- 应用场景:
- 结构化数据缓存:存储用户资料、商品属性、文章元数据等。
- 集群配置共享:存储分布式系统中各个节点的相关配置信息。
- List(列表)
- 示例:
LPUSH list_key item1 # 将元素推入列表头部
RPUSH list_key item2 # 将元素推入列表尾部
LRANGE list_key 0 -1 # 获取列表内所有元素
LPOP list_key # 弹出并返回列表的第一个元素
- 应用场景:
- 消息队列:作为简单的消息队列,实现发布/订阅或工作队列功能。
- 活动排行榜:存储用户的动态排名信息,如最新发表的文章列表、最近登录用户列表等。
- Set(集合)
- 示例:
SADD members user1 # 添加唯一成员到集合
SREM members user2 # 移除集合中的指定成员
SMEMBERS members # 返回集合中的所有成员
SINTER set1 set2 # 计算两个集合的交集
- 应用场景:
- 标签系统:存储用户标签、商品分类等不重复的数据集合。
- 关系处理:好友关系、关注关系等社交网络中的一对多关系。
- 去重:记录用户参与活动的唯一标识,确保每个用户只能参加一次。
- Sorted Set(有序集合)
- 示例:
ZADD zset_key 1 member1 # 添加带有分数的成员
ZRANGE zset_key 0 -1 # 获取有序集合内的所有成员,按分值排序
ZRANK zset_key member1 # 获取成员在有序集合中的排名(升序)
ZINCRBY zset_key 1 member # 对成员的分值进行递增
- 应用场景:
- 排行榜:根据得分或时间戳进行排序的榜单,例如游戏高分排行、文章热度排行等。
- 时间窗口限流:基于时间范围内的计数,例如限制某个时间段内登录次数、请求频率等。
随着Redis版本的更新,还增加了其他数据类型如BitMap、GEO(地理空间索引)、Stream(流数据结构)等,它们同样有各自的应用场景。但以上五种是Redis的经典且基础的数据类型。