Redis五种核心数据结构的基本使用与应用场景
发布日期:2025-05-03 07:15:22 浏览次数:8 分类:精选文章

本文共 2686 字,大约阅读时间需要 8 分钟。

Redis核心数据结构详解

Redis作为一个强大的事务性数据库,提供了丰富的数据结构类型,每种数据结构都有其独特的应用场景。本文将详细介绍Redis的五大核心数据结构:String、Hash、List、Set以及Zset,并阐述其操作命令及应用场景。


String

操作命令

  • 存入字符串键值对

    # 存入字符串键值对SET  key  value
    key value
    # 批量存储字符串键值对MSET key value [key value ...]
    key value [key value ...]
    # 存入一个不存在的字符串键值对SETNX key value
    key value
    # 获取一个字符串键值GET key
    key
    # 批量获取字符串键值MGET key [key ...]
    key [key ...]
    # 删除一个键DEL key [key ...]
    key [key ...]
    # 设置一个键的过期时间(秒)EXPIRE key seconds
    key seconds
  • 原子加减运算

    # 将key中储存的数字值加1INCR  key
    key
    # 将key中储存的数字值减1DECR key
    key
    # 将key所储存的值加上incrementINCRBY key increment
    key increment
    # 将key所储存的值减去decrementDECRBY key decrement
    key decrement

应用场景

  • 字符串的缓存:用于存储短期有效的缓存数据。
  • 对象转json的缓存:用于存储和检索JSON对象。
  • 分布式锁:通过设置过期时间实现分布式锁。
  • 数量自增:用于生成全局唯一ID或序列号。
  • 分布式系统全局序列号:用于生成分布式系统中唯一的标识符。

Hash

操作命令

  • 存储哈希表键值对
    # 存储一个哈希表key的键值HSET  key  field  value
    key field value
    # 存储一个不存在的哈希表key的键值HSETNX key field value
    key field value
    # 存储多个键值对HMSET key field value [field value ...]
    key field value [field value ...]
    # 获取哈希表key对应的field键值HGET key field
    key field
    # 批量获取多个field键值HMGET key field [field ...]
    key field [field ...]
    # 删除哈希表key中的field键值HDEL key field [field ...]
    key field [field ...]
    # 返回哈希表key中field的数量HLEN key
    key
    # 返回哈希表key中所有的键值HGETALL key
    key
    # 为哈希表key中field键的值加上增量incrementHINCRBY key field increment
    key field increment

应用场景

  • 电商购物车:key为购物车前缀加用户ID,field为商品ID,value为购买数量。
  • 分布式锁:通过设置过期时间实现分布式锁。
  • 数据管理:同类数据归类整合储存,方便数据管理。

Set

操作命令

  • 存入集合元素
    # 往集合key中存入元素,元素存在则忽略,若key不存在则新建SADD  key  member  [member ...]
    key member [member ...]
    # 从集合key中删除元素SREM key member [member ...]
    key member [member ...]
    # 获取集合key中所有元素SMEMBERS key
    key
    # 获取集合key的元素个数SCARD key
    key
    # 判断member元素是否存在于集合key中SISMEMBER key member
    key member
    # 从集合key中选出count个元素,元素不从key中删除SRANDMEMBER key [count]
    key [count]
    # 从集合key中选出count个元素,元素从key中删除SPOP key [count]
    key [count]

应用场景

  • 抽奖:通过SRANDMEMBER或SPOP命令随机抽取元素。
  • 取交集并集差集:用于共同关注的人等场景。

Zset

操作命令

  • 存入有序集合元素
    # 往有序集合key中加入带分值元素ZADD  key  score member [[score member]…]
    key score member [[score member]…]
    # 从有序集合key中删除元素ZREM key member [member …]
    key member [member …]
    # 返回有序集合key中元素member的分值ZSCORE key member
    key member
    # 为有序集合key中元素member的分值加上incrementZINCRBY key increment member
    key increment member
    # 返回有序集合key中元素个数ZCARD key
    key
    # 正序获取有序集合key从start下标到stop下标的元素ZRANGE key start stop [WITHSCORES]
    key start stop [WITHSCORES]
    # 倒序获取有序集合key从start下标到stop下标的元素ZREVRANGE key start stop [WITHSCORES]
    key start stop [WITHSCORES]

应用场景

  • 排名/热搜:用于存储带分数的数据,按分数排序。
  • 场景:比如按点击量排序的热搜话题。

总结

Redis的五大核心数据结构(String、Hash、List、Set、Zset)各有特点,适用于不同的场景。String适合存储简单的键值对,Hash适合存储对象数据,List实现栈、队列,Set用于集合运算,Zset则结合了Set和有序集合的优点,适合需要排序的场景。理解和合理使用这些数据结构,可以充分发挥Redis的优越性能。

上一篇:Redis五种数据结构简介
下一篇:phpcms V9 自定义添加 全局变量{DIY_PATH}方法

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2026年06月10日 20时10分45秒