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 # 位运算

相关推荐
TDengine (老段)7 分钟前
TDengine IDMP 十大实用功能(9)
大数据·数据库·人工智能·物联网·时序数据库·tdengine·idmp
starrocks_stella1 小时前
EMR Serverless StarRocks Object Table:用 SQL 连接 OSS 文件与多模态 AI
数据库
这个DBA有点耶1 小时前
以为自增ID只是有空洞?聊聊双主架构下无声的“数据覆盖”
数据库·mysql·dba
钱栈up2 小时前
内网全断,怎么核实高炉和烧结系统的数据库对接信息
数据库
weavecodes2 小时前
双层缓存与权限实时生效:织码在线教育系统的 Caffeine + Redis 设计
数据库
bksczm3 小时前
InnoDB 页结构详解:页类型、页头页尾、数据行与页目录
数据库·mysql
bksczm3 小时前
InnoDB 行格式详解:DYNAMIC / COMPACT / COMPRESSED / REDUNDANT
java·开发语言·数据库
字节跳动开源4 小时前
OpenViking连接业务系统,LLM Wiki一键编译
数据库·开源
用户094248568034 小时前
第22章:Redis 持久化 RDB 与 AOF:数据不丢的底线
redis·架构·源码
没有气的汽水4 小时前
升级完客户端,redis 又开始大量返回 MOVED:一个埋了七个月的本地配置
redis