2.Redis核心数据结构

概率

核心数据结构

  • String 字符串

  • Hash 哈希

  • List 链表

  • Set 集合

  • Sorted Set / ZSet 有序集合

  • Bitmap 位图

  • GEO 地理位置

Redis帮助命令

复制代码

help @<group> # 查看某类命令 help <command> # 查看单个命令用法 help <tab> # 查看可帮助主题 quit # 退出

String 字符串结构

String是Redis最基础,最常用的数据结构,可存储字符串,数字,Json串,二进制等

常用命令

复制代码

SET key value # 设值 GET key # 取值 MSET k1 v1 k2 v2 # 批量设值 MGET k1 k2 # 批量取值 SETNX key value # 不存在则设置(分布式锁基础) DEL key # 删除 EXPIRE key seconds # 设置过期时间 # 原子加减(高并发计数必备) INCR key # +1 DECR key # -1 INCRBY key 10 # +10 DECRBY key 5 # -5

应用场景

普通缓存:用户信息、商品信息、配置

对象缓存:存储 JSON 字符串

分布式锁SET lock:order true EX 10 NX

计数器:点赞数、阅读数、库存

分布式 ID:全局唯一 ID 生成

Hash 哈希结构

Hash适合存储对象/结构化数据,如用户信息,商品信息,购物车

常见命令

复制代码

HSET key field value # 设置单个字段 HGET key field # 获取单个字段 HMSET key f1 v1 f2 v2 # 批量设置 HMGET key f1 f2 # 批量获取 HDEL key field # 删除字段 HLEN key # 字段数量 HGETALL key # 获取所有键值 HINCRBY key field num # 字段原子自增

应用场景:电商购物车

用户id为key,商品id为filed,视频数量为value

复制代码

1) 添加商品hset cart:1001 10088 1 2) 增加数量hincrby cart:1001 10088 1 3) 商品总数hlen cart:1001 4) 删除商品hdel cart:1001 10088 5) 获取购物车所有商品hgetall cart:1001

优点

  • 结构清晰,适合存储对象

  • 相比 String 更省内存

  • 支持字段级操作

缺点

  • 无法对 field 设置过期

  • 集群模式下不适合超大 hash

List列表结构

List是有序可重复的双向列表结构,支持双端操作

常见命令

复制代码

LPUSH key val1 val2 # 左进(队头) RPUSH key val1 val2 # 右进(队尾) LPOP key # 左出 RPOP key # 右出 LRANGE key 0 -1 # 查看全部 BLPOP key timeout # 阻塞左弹出 BRPOP key timeout # 阻塞右弹出

天然实现的数据结构

  • 栈(Stack):LPUSH + LPOP

  • 队列(Queue):LPUSH + RPOP

  • 阻塞 MQ:LPUSH + BRPOP

应用场景

  • 消息队列、任务队列

  • 时间线、动态列表

  • 评论列表、播放列表

Set集合结构

Set是无序,不可重复的集合,支持并集,交集,差集

常见命令

复制代码

SADD key mem1 mem2 # 添加 SREM key mem # 删除 SMEMBERS key # 查看所有 SCARD key # 元素个数 SISMEMBER key mem # 是否存在 SRANDMEMBER key count # 随机取(不删) SPOP key count # 随机取(删除) # 集合运算 SINTER k1 k2 k3 # 交集 SUNION k1 k2 k3 # 并集 SDIFF k1 k2 k3 # 差集

应用场景

  1. 抽奖:参与用户 → 随机抽取中奖者

  2. 点赞 / 收藏 / 标签:去重、统计数量

  3. 共同关注、好友推荐(交集、差集)

  4. 去重统计:UV、独立设备

Sorted Set / ZSet 有序集合

在 Set 基础上增加 score(分数),实现自动排序。

常见命令

复制代码

ZADD key score mem # 添加 ZREM key mem # 删除 ZSCORE key mem # 查分数 ZINCRBY key num mem # 分数自增 ZCARD key # 元素个数 ZRANGE key 0 -1 # 正序 ZREVRANGE key 0 -1 # 倒序(常用)

应用常见:

  • 排行榜

  • 成绩排名、粉丝排序

  • 延时任务(score = 时间戳)

BitMap位图

Bitmap 以bit 位存储数据,极省空间。

常用命令

复制代码

SETBIT key offset val # 设置某一位 GETBIT key offset # 获取某一位 BITCOUNT key # 统计1的个数 BITOP AND/OR/XOR dest k1 k2 # 位运算

相关推荐
Daydream.V1 小时前
Redis 零基础入门到实战:数据结构 + 常用命令 + 场景全覆盖
数据结构·数据库·redis
bnmoel1 小时前
数据结构深度剖析二叉树・中篇:堆的概念及结构 ,实现应用全解析
数据结构·算法·二叉树··top-k问题
fu的博客1 小时前
【数据结构15】哈夫曼树构建、编码(附手绘图解)
数据结构
小a彤1 小时前
atvoss:Vector 算子子程序模板库,让 Ascend C 开发效率提升 5 倍
android·c语言·数据库
bnmoel1 小时前
数据结构深度剖析二叉树・上篇:基础概念、结构特性、存储结构全解析
c语言·数据结构·二叉树·
不爱洗脚的小滕1 小时前
【向量数据库】Milvus 稠密与稀疏向量核心解析
数据库·人工智能·milvus
AI周红伟2 小时前
Windows 支持 Hermes Agent 吗:原生 Windows 安装 + WSL2 路径完整指南
数据库·人工智能·windows·阿里云·职场和发展·计算机外设
电商API_180079052472 小时前
价格波动预警|用API实时监控淘宝京东商品价格,实现自动化竞品调价与捡漏
大数据·运维·数据库·人工智能·数据挖掘·自动化
Dlrb12112 小时前
数据结构-单链表与双链表
c语言·数据结构·链表·排序·双链表