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

相关推荐
小羊没烦恼!2 分钟前
在.net中读写config文件的各种方法
java·大数据·运维·服务器·前端·数据库·oracle
NocoBase11 分钟前
本周更新|优化及缺陷修复
数据库·人工智能·开源·零代码·无代码
Logic10113 分钟前
C语言/数据结构二维数组题解:找出行列O个数均为偶数的格子——奇偶性预处理+二次遍历
c语言·数据结构·算法·二维数组·时间复杂度·动态内存分配·奇偶性
.Bryce.25 分钟前
三协议合一实战:用MCP+A2A+ANP搭建一个智能研究助手
网络·redis·agent·codex·mcp·a2a·anp
大侠归来31 分钟前
Redis Cluster 的 16384 个槽(Slot)是什么?
数据库·redis·缓存
墨天梦40 分钟前
D26_数据库迁移与可复现构建
数据库·oracle
猫咪很可爱1 小时前
Oracle归档自动删除任务失败
数据库·oracle
cccccc语言我来了1 小时前
Linux (11) 进程控制
linux·运维·数据库
垆边人似月.1 小时前
移动长度 k 子串使字符串变成回文
数据结构·算法
David猪大卫1 小时前
【C++修炼】string类:string类的模拟实现
c语言·开发语言·数据结构·c++·经验分享·笔记·学习