Redis 提供了多种数据类型,每种数据类型都有其特定的用途和操作命令。以下是Redis五种基本数据类型及其使用示例与应用场景:

  1. String(字符串)
  • 示例:
SET key value    # 设置键值对
GET key         # 获取键对应的值
INCR key        # 自增整数值(适合计数器场景)
MGET key1 key2  # 获取多个键的值
  • 应用场景:
  • 缓存:存储用户信息、页面内容等。
  • 计数器:统计访问量、点赞数、积分、库存数量等。
  • 会话存储:保存session ID或其他会话相关数据。
  1. Hash(哈希)
  • 示例:
HSET user:1 name "John" age 30
HMSET user:1 name John gender Male age 30
HGETALL user:1          # 获取整个哈希表内容
HGET user:1 age         # 获取指定字段的值
  • 应用场景:
  • 结构化数据缓存:存储用户资料、商品属性、文章元数据等。
  • 集群配置共享:存储分布式系统中各个节点的相关配置信息。
  1. List(列表)
  • 示例:
LPUSH list_key item1    # 将元素推入列表头部
RPUSH list_key item2    # 将元素推入列表尾部
LRANGE list_key 0 -1   # 获取列表内所有元素
LPOP list_key           # 弹出并返回列表的第一个元素
  • 应用场景:
  • 消息队列:作为简单的消息队列,实现发布/订阅或工作队列功能。
  • 活动排行榜:存储用户的动态排名信息,如最新发表的文章列表、最近登录用户列表等。
  1. Set(集合)
  • 示例:
SADD members user1      # 添加唯一成员到集合
SREM members user2      # 移除集合中的指定成员
SMEMBERS members       # 返回集合中的所有成员
SINTER set1 set2       # 计算两个集合的交集
  • 应用场景:
  • 标签系统:存储用户标签、商品分类等不重复的数据集合。
  • 关系处理:好友关系、关注关系等社交网络中的一对多关系。
  • 去重:记录用户参与活动的唯一标识,确保每个用户只能参加一次。
  1. 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的经典且基础的数据类型。