• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Redis中的常用的五种数据类型详解

    发布者: 404号房间 | 发布时间: 2025-6-19 12:41| 查看数: 80| 评论数: 0|帖子模式

    Redis常用的五种数据类型


    一、字符串(String)






    简介

    字符串是 Redis 中最基本的数据类型,可以存储任何类型的数据(如文本、数字、二进制数据等)。每个字符串的最大长度可以达到 512 MB。





    常用命令

    SET key value

    • 用途:设置键
      1. key
      复制代码
      的值为
      1. value
      复制代码

    • 语法
      1. SET key value
      复制代码
    • 示例
    1. SET username "john_doe"
    复制代码
    GET key

    • 用途:获取键
      1. key
      复制代码
      的值。
    • 语法
      1. GET key
      复制代码
    • 示例
    1. GET username
    复制代码
    DEL key

    • 用途:删除指定的键
      1. key
      复制代码

    • 语法
      1. DEL key
      复制代码


    • 示例
    1. DEL username
    复制代码
    EXISTS key

    • 用途:检查键
      1. key
      复制代码
      是否存在。
    • 语法
      1. EXISTS key
      复制代码
    • 示例
    1. EXISTS username
    复制代码
    INCR key

    • 用途:将键
      1. key
      复制代码
      的值加 1。若键不存在,则初始化为 0。
    • 语法
      1. INCR key
      复制代码
    • 示例
    1. INCR page_views
    复制代码
    DECR key

    • 用途:将键
      1. key
      复制代码
      的值减 1。若键不存在,则初始化为 0。
    • 语法
      1. DECR key
      复制代码
    • 示例
    1. DECR user_count
    复制代码
    APPEND key value

    • 用途:将字符串值
      1. value
      复制代码
      追加到键
      1. key
      复制代码
      的现有值后。
    • 语法
      1. APPEND key value
      复制代码
    • 示例
    1. APPEND username "_2023"
    复制代码
    MSET key1 value1 key2 value2 …

    • 用途:同时设置多个键值对。
    • 语法
      1. MSET key1 value1 key2 value2 ...
      复制代码
    示例
    1. MSET key1 "value1" key2 "value2"
    复制代码
    MGET key1 key2 …

    • 用途:获取多个键的值。
    • 语法
      1. MGET key1 key2 ...
      复制代码
    • 示例
    1. MGET key1 key2
    复制代码
    SETEX key seconds value

    • 用途:设置键
      1. key
      复制代码
      的值为
      1. value
      复制代码
      ,并在
      1. seconds
      复制代码
      秒后过期。
    • 语法
      1. SETEX key seconds value
      复制代码
    • 示例
    1. SETEX session:123 3600 "abc123"  # 设置1小时后过期
    复制代码




    应用场景


    • 缓存系统:用于存储用户会话信息、网页内容等,以提高数据访问速度。
    • 计数器:实现简单的计数器功能,例如统计网站访问量、点赞数等。
    • Token 存储:在身份验证系统中存储用户的身份令牌。

    二、哈希(Hash)

    简介

    哈希是一种存储键值对的映射,适合存储对象。每个哈希最多支持 2^32-1 个字段,通常用于表示一个复杂的对象。
    常用命令

    HSET key field value

    • 用途:为哈希表
      1. key
      复制代码
      中的字段
      1. field
      复制代码
      设置值
      1. value
      复制代码

    • 语法
      1. HSET key field value
      复制代码
    • 示例
    1. HSET user:1000 name "John Doe"
    复制代码
    HGET key field

    • 用途:获取哈希表
      1. key
      复制代码
      中字段
      1. field
      复制代码
      的值。
    • 语法
      1. HGET key field
      复制代码
    示例
    1. HGET user:1000 name
    复制代码
    HGETALL key

    • 用途:获取哈希表
      1. key
      复制代码
      中的所有字段及其对应的值。
    • 语法
      1. HGETALL key
      复制代码
    • 示例
    1. HGETALL user:1000
    复制代码
    HDEL key field

    • 用途:删除哈希表
      1. key
      复制代码
      中的字段
      1. field
      复制代码

    • 语法
      1. HDEL key field
      复制代码
    • 示例
    1. HDEL user:1000 age
    复制代码
    HINCRBY key field increment

    • 用途:将哈希表
      1. key
      复制代码
      中字段
      1. field
      复制代码
      的值加上
      1. increment
      复制代码

    • 语法
      1. HINCRBY key field increment
      复制代码
    • 示例
    1. HINCRBY user:1000 age 1
    复制代码
    HKEYS key

    • 用途:获取哈希表
      1. key
      复制代码
      中所有的字段名。
    • 语法
      1. HKEYS key
      复制代码
    • 示例
    1. HKEYS user:1000
    复制代码
    HVALS key

    • 用途:获取哈希表
      1. key
      复制代码
      中所有的字段值。
    • 语法
      1. HVALS key
      复制代码
    • 示例
    1. HVALS user:1000
    复制代码
    HEXISTS key field

    • 用途:检查哈希表
      1. key
      复制代码
      中是否存在字段
      1. field
      复制代码

    • 语法
      1. HEXISTS key field
      复制代码
    • 示例
    1. HEXISTS user:1000 name
    复制代码
    HMSET key field1 value1 field2 value2 …

    • 用途:同时设置多个字段的值。
    • 语法
      1. HMSET key field1 value1 field2 value2 ...
      复制代码
    • 示例
    1. HMSET user:1000 name "John Doe" age 30
    复制代码
    HMGET key field1 field2 …

    • 用途:获取哈希表中多个字段的值。
    • 语法
      1. HMGET key field1 field2 ...
      复制代码
    • 示例
    1. HMGET user:1000 name age
    复制代码
    应用场景


    • 用户信息存储:使用哈希存储用户的多个属性(如用户名、年龄、地址等),方便进行快速查询和更新。
    • 商品信息管理:在电商系统中,利用哈希存储商品的详细信息(如价格、库存、销量等)。

    三、列表(List)

    简介

    列表是有序的字符串集合,支持重复元素。列表的长度可以达到 2^32-1 个元素,适合实现队列和栈等数据结构。
    常用命令

    LPUSH key value

    • 用途:将一个或多个值插入到列表
      1. key
      复制代码
      的头部。
    • 语法
      1. LPUSH key value [value ...]
      复制代码
    • 示例
    1. LPUSH tasks "Task 1"
    复制代码
    RPUSH key value

    • 用途:将一个或多个值插入到列表
      1. key
      复制代码
      的尾部。
    • 语法
      1. RPUSH key value [value ...]
      复制代码
    • 示例
    1. RPUSH tasks "Task 2"
    复制代码
    LPOP key

    • 用途:移除并返回列表
      1. key
      复制代码
      的第一个元素。
    • 语法
      1. LPOP key
      复制代码
    • 示例
    1. LPOP tasks
    复制代码
    RPOP key

    • 用途:移除并返回列表
      1. key
      复制代码
      的最后一个元素。
    • 语法
      1. RPOP key
      复制代码
    • 示例
    1. RPOP tasks
    复制代码
    LRANGE key start stop

    • 用途:获取列表
      1. key
      复制代码
      指定范围内的元素,
      1. start
      复制代码
      1. stop
      复制代码
      是索引,负数代表从末尾开始计数。
    • 语法
      1. LRANGE key start stop
      复制代码
    • 示例
    1. LRANGE tasks 0 -1  # 获取整个任务列表
    复制代码
    LTRIM key start stop

    • 用途:修剪列表
      1. key
      复制代码
      ,保留
      1. start
      复制代码
      1. stop
      复制代码
      范围内的元素。
    • 语法
      1. LTRIM key start stop
      复制代码
    • 示例
    1. LTRIM tasks 0 4  # 只保留前5个元素
    复制代码
    LINDEX key index

    • 用途:获取列表
      1. key
      复制代码
      中指定索引
      1. index
      复制代码
      的元素。
    • 语法
      1. LINDEX key index
      复制代码
    • 示例
    1. LINDEX tasks 1  # 获取第二个任务
    复制代码
    LLEN key

    • 用途:获取列表
      1. key
      复制代码
      的长度。
    • 语法
      1. LLEN key
      复制代码
    • 示例
    1. LLEN tasks
    复制代码
    RPOPLPUSH source destination

    • 用途:移除列表
      1. source
      复制代码
      的最后一个元素,将其插入到列表
      1. destination
      复制代码
      的头部。
    • 语法
      1. RPOPLPUSH source destination
      复制代码
    • 示例
    1. RPOPLPUSH tasks completed_tasks
    复制代码
    BRPOP key [key …] timeout

    • 用途:阻塞弹出列表
      1. key
      复制代码
      的最后一个元素,直到超时或有新的元素可用。
    • 语法
      1. BRPOP key [key ...] timeout
      复制代码
    • 示例
    1. BRPOP tasks 5  # 等待5秒后返回
    复制代码
    应用场景


    • 消息队列:使用列表实现任务队列,支持 FIFO(先进先出)逻辑。
    • 时间序列数据:存储用户操作记录或日志信息,以便按时间顺序访问。

    四、集合(Set)

    简介

    集合是无序的字符串集合,支持添加、删除和查找操作。集合中的元素是唯一的,重复元素会被自动忽略。
    常用命令

    SADD key member [member …]

    • 用途:向集合
      1. key
      复制代码
      添加一个或多个成员。
    • 语法
      1. SADD key member [member ...]
      复制代码
    • 示例
    1. SADD myset "apple"
    复制代码
    SREM key member [member …]

    • 用途:从集合
      1. key
      复制代码
      移除一个或多个成员。
    • 语法
      1. SREM key member [member ...]
      复制代码
    • 示例
    1. SREM myset "banana"
    复制代码
    SMEMBERS key

    • 用途:获取集合
      1. key
      复制代码
      中的所有成员。
    • 语法
      1. SMEMBERS key
      复制代码
    • 示例
    1. SMEMBERS myset
    复制代码
    SISMEMBER key member

    • 用途:判断成员
      1. member
      复制代码
      是否在集合
      1. key
      复制代码
      中。
    • 语法
      1. SISMEMBER key member
      复制代码
    • 示例
    1. SISMEMBER myset "apple"
    复制代码
    SINTER key1 key2 [key3 …]

    • 用途:返回给定所有集合的交集。
    • 语法
      1. SINTER key1 key2 [key3 ...]
      复制代码
    • 示例
    1. SINTER set1 set2
    复制代码
    SUNION key1 key2 [key3 …]

    • 用途:返回给定所有集合的并集。
    • 语法
      1. SUNION key1 key2 [key3 ...]
      复制代码
    • 示例
    1. SUNION set1 set2
    复制代码
    SDIFF key1 key2 [key3 …]

    • 用途:返回集合
      1. key1
      复制代码
      与其他集合的差集。
    • 语法
      1. SDIFF key1 key2 [key3 ...]
      复制代码
    • 示例
    1. SDIFF set1 set2
    复制代码
    SPOP key [count]

    • 用途:移除并返回集合
      1. key
      复制代码
      中的一个或多个随机成员。
    • 语法
      1. SPOP key [count]
      复制代码
    • 示例
    1. SPOP myset 2  # 随机移除并返回2个成员
    复制代码
    SCARD key

    • 用途:获取集合
      1. key
      复制代码
      的成员数量。
    • 语法
      1. SCARD key
      复制代码
    • 示例
    1. SCARD myset
    复制代码
    SMOVE source destination member

    • 用途:将成员
      1. member
      复制代码
      从集合
      1. source
      复制代码
      移动到集合
      1. destination
      复制代码

    • 语法
      1. SMOVE source destination member
      复制代码
    示例
    1. SMOVE myset other_set "apple"
    复制代码
    应用场景


    • 标签系统:使用集合存储用户的兴趣标签,方便进行兴趣推荐。
    • 统计独立用户:统计网站的独立访客数或活跃用户数,利用集合的去重特性。

    五、有序集合(Sorted Set)

    简介

    有序集合是一个字符串集合,其中每个元素都关联一个分数(score),集合中的元素是有序的。成员是唯一的,但分数可以重复。
    常用命令

    ZADD key score member [score member …]

    • 用途:向有序集合
      1. key
      复制代码
      添加一个或多个成员及其分数。
    • 语法
      1. ZADD key score member [score member ...]
      复制代码
    示例
    1. [code]ZADD leaderboard <span>100</span> <span>"player1"</span>
    复制代码
    [/code]ZRANGE key start stop [WITHSCORES]

    • 用途:返回有序集合
      1. key
      复制代码
      中指定区间内的成员。
    • 语法
      1. ZRANGE key start stop [WITHSCORES]
      复制代码
    • 示例
    1. ZRANGE leaderboard 0 -1 WITHSCORES  # 获取所有玩家及其分数
    复制代码
    ZREM key member [member …]

    • 用途:移除有序集合
      1. key
      复制代码
      中的一个或多个成员。
    • 语法
      1. ZREM key member [member ...]
      复制代码
    • 示例
    1. ZREM leaderboard "player1"
    复制代码
    ZRANK key member

    • 用途:返回成员
      1. member
      复制代码
      在有序集合
      1. key
      复制代码
      中的排名(从 0 开始)。
    • 语法
      1. ZRANK key member
      复制代码
    • 示例
    1. ZRANK leaderboard "player2"
    复制代码
    ZCARD key

    • 用途:返回有序集合
      1. key
      复制代码
      的成员数量。
    • 语法
      1. ZCARD key
      复制代码
    • 示例
    1. ZCARD leaderboard
    复制代码
    ZSCORE key member

    • 用途:获取有序集合
      1. key
      复制代码
      中成员
      1. member
      复制代码
      的分数。
    • 语法
      1. ZSCORE key member
      复制代码
    示例
    1. ZSCORE leaderboard "player2"
    复制代码
    ZREVRANGE key start stop [WITHSCORES]

    • 用途:以分数从高到低的顺序返回有序集合
      1. key
      复制代码
      中指定区间内的成员。
    • 语法
      1. ZREVRANGE key start stop [WITHSCORES]
      复制代码
    • 示例
    1. ZREVRANGE leaderboard 0 -1 WITHSCORES  # 获取所有玩家及其分数,按分数从高到低
    复制代码
    ZINCRBY key increment member

    • 用途:将有序集合
      1. key
      复制代码
      中成员
      1. member
      复制代码
      的分数加上
      1. increment
      复制代码

    • 语法
      1. ZINCRBY key increment member
      复制代码
    • 示例
    1. ZINCRBY leaderboard 10 "player1"  # player1的分数增加10
    复制代码
    ZPOPMIN key [count]

    • 用途:移除并返回有序集合
      1. key
      复制代码
      中分数最低的一个或多个成员。
    • 语法
      1. ZPOPMIN key [count]
      复制代码
    • 示例
    1. ZPOPMIN leaderboard 1  # 移除并返回分数最低的1个成员
    复制代码
    ZPOPMAX key [count]

    • 用途:移除并返回有序集合
      1. key
      复制代码
      中分数最高的一个或多个成员。
    • 语法
      1. ZPOPMAX key [count]
      复制代码
    • 示例
    1. ZPOPMAX leaderboard 1  # 移除并返回分数最高的1个成员
    复制代码
    应用场景


    • 排行榜:用于游戏的得分排行榜、社交媒体的热度排名等。
    • 时间敏感的数据:如实时推荐系统,根据用户行为的分数动态更新推荐内容。

    总结

    通过详细了解 Redis 各种数据类型及其常用命令,开发者可以更有效地利用 Redis 提供的强大功能。在高并发和高性能的应用场景下,正确选择和使用 Redis 的数据结构和命令将显著提高应用的性能和可扩展性。希望本篇文章能为你的 Redis 使用提供帮助!
    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    来源:https://www.jb51.net/database/3382005gx.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表