redis学习之基础数据结构

Redis 提供了 5 种最核心和基础的数据类型。

  1. String(字符串)
    这是最简单也是最常用的类型,它是二进制安全的,意味着可以存储任何数据,比如 JPEG 图片、序列化的对象,或者简单的文本和数字。
  • 常用命令:
shell 复制代码
SET key value: 设置值。

GET key: 获取值。

INCR key / DECR key: 将值作为整数进行自增/自减。

INCRBY key increment: 增加指定的整数。

MSET key1 value1 key2 value2 ...: 批量设置。

MGET key1 key2 ...: 批量获取。

STRLEN key: 获取字符串长度。
  • 应用场景:

    • 缓存:存储会话、HTML 片段、对象等。

    • 计数器:文章的阅读量、点赞数。

    • 分布式锁:利用 SET key value NX PX timeout 实现。

    • 简单的键值存储:如系统配置。

  1. List(列表)
    一个简单的字符串列表,按照插入顺序排序。你可以在列表的头部(左边)或尾部(右边)添加元素。一个列表最多可以包含 2^32 - 1 个元素。
  • 常用命令:
shell 复制代码
LPUSH key value / RPUSH key value: 从左边/右边插入一个元素。

LPOP key / RPOP key: 从左边/右边弹出一个元素。

LRANGE key start stop: 获取指定范围内的元素(0 到 -1 表示获取所有)。

BLPOP key timeout: 阻塞式地从列表弹出元素,如果列表为空则会阻塞直到超时或有元素可用。
  • 应用场景:

    • 消息队列:使用 LPUSH 和 BRPOP 可以实现一个简单的 FIFO 队列。

    • 最新列表:例如最新 10 条新闻,使用 LPUSH 加入,再用 LTRIM 修剪长度。

    • 记录用户的操作历史。

  1. Hash(哈希)
    一个键值对集合,非常适合存储对象。例如,存储一个用户信息(姓名、年龄、邮箱等)。

常用命令:

shell 复制代码
HSET key field value: 设置哈希表中字段的值。

HGET key field: 获取哈希表中字段的值。

HGETALL key: 获取哈希表中所有的字段和值。

HMSET key field1 value1 field2 value2 ...: 批量设置多个字段。

HINCRBY key field increment: 对哈希表中某个字段的值进行整数自增。
  • 应用场景:

    • 存储对象:相比于将整个对象序列化成 JSON 字符串存成 String,使用 Hash 可以单独访问或修改某个字段,更节省内存和网络资源。

    • 购物车:key 为用户ID,field 为商品ID,value 为商品数量。

  1. Set(集合)
    Redis 的 Set 是 String 类型的无序、唯一的集合。它支持交集、并集、差集等操作。
  • 常用命令:
shell 复制代码
SADD key member1 member2 ...: 添加一个或多个成员。

SMEMBERS key: 返回集合中的所有成员。

SISMEMBER key member: 判断成员是否在集合中。

SINTER key1 key2: 返回多个集合的交集。

SUNION key1 key2: 返回多个集合的并集。

SDIFF key1 key2: 返回第一个集合与其他集合的差集。
  • 应用场景:
    • 标签系统:给文章/用户添加标签,一个文章的所有标签就是一个集合。
    • 共同好友/关注:两个人的好友集合求交集。
    • 抽奖:SADD 添加参与者,SPOP 随机弹出获奖者。
    • 数据去重
  1. Sorted Set(有序集合)
    和 Set 一样,也是 String 类型元素的集合,且不允许重复。但每个元素都会关联一个 double 类型的分数(score)。Redis 正是通过分数来为集合中的成员进行从小到大的排序。成员是唯一的,但分数可以重复。
  • 常用命令:
shell 复制代码
ZADD key score1 member1 score2 member2 ...: 添加成员及其分数。

ZRANGE key start stop [WITHSCORES]: 按分数从低到高返回指定排名范围的成员。

ZREVRANGE key start stop [WITHSCORES]: 按分数从高到低返回指定排名范围的成员。

ZRANK key member: 返回成员在集合中的正序排名(从0开始)。

ZREVRANK key member: 返回成员在集合中的倒序排名。

ZSCORE key member: 返回成员的分数。

ZRANGEBYSCORE key min max: 返回指定分数区间的成员。
  • 应用场景:

    • 排行榜:游戏积分榜、热搜榜。成员是内容(如文章ID),分数是热度值。

    • 带权重的队列:分数代表优先级,系统总是处理分数最小的任务。

    • 延时任务:将任务的执行时间作为分数,使用 ZRANGEBYSCORE 查询到期的任务。

相关推荐
M78佐菲40 分钟前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
yi.Ist2 小时前
数据定义语言-DDL操作
数据库·学习·mysql·oracle·大海豚
晊晌_h2 小时前
嵌入式从0到精通——数据结构总结[特殊字符]
数据结构·算法·排序算法
我找到地球的支点啦3 小时前
Matlab系列(009) 一CRC循环冗余校验详解
开发语言·数据结构·算法·matlab·信息与通信
骐骥15 小时前
学习:javaScriptProxy和registerJavaScriptProxy有什么区别,能注册多少个对象
学习·鸿蒙
Huathy-雨落江南,浮生若梦5 小时前
Caddy 学习笔记 - 反向代理与 IP 封禁
笔记·学习·tcp/ip
接着奏乐接着舞。6 小时前
【2026】73道Redis 常见面试题与参考答案
数据库·redis·后端·缓存
m4Rk_7 小时前
【论文阅读】Agent 记忆机制(57):MemSearch-o1——从查询词元生长证据,重组 Deep Search 记忆路径
论文阅读·人工智能·学习·开源·github
闭月之泪舞8 小时前
C++编程学习
c++·学习
lisin-lee-cooper8 小时前
【leetcode658】有序数组找出k个最接近x的数
java·数据结构·算法