redis的基础知识

Redis 是一个开源的内存数据结构存储系统,支持多种数据类型和原子操作,广泛应用于缓存、消息队列、分布式锁等场景。以下是其核心知识点:


​​一、核心特性​​

  1. ​​内存存储​​

    数据完全存储在内存中,读写速度极快(单节点可达数十万至百万 ops/s)。

  2. ​​丰富的数据类型​​

    支持 String、Hash、List、Set、Sorted Set 等基础类型,以及 Bitmap、HyperLogLog、Geo 等扩展类型。

  3. ​​原子性与事务​​

    单个命令原子执行;通过 MULTI/EXEC实现事务(不支持回滚);Lua 脚本可保证多命令原子性。

  4. ​​持久化机制​​

    • ​​RDB​​:定时生成内存快照,恢复速度快但可能丢失数据。

    • ​​AOF​​:记录写命令日志,数据更完整但文件较大。

    • 混合持久化:结合 RDB 和 AOF,平衡性能与数据安全。


​​二、核心数据结构与使用场景​​

数据类型 特点与用途 典型命令
​​String​​ 最基础类型,存储字符串或二进制数据(如图片),支持计数器、缓存等场景 SET, GET, INCR
​​Hash​​ 键值对集合,适合存储对象(如用户信息),节省内存 HSET, HGET, HGETALL
​​List​​ 双向链表,支持消息队列、任务调度,可阻塞操作(如 BLPOP) LPUSH, RPOP, LRANGE
​​Set​​ 无序集合,支持去重、交集/并集/差集操作,适合标签系统、共同关注等场景 SADD, SMEMBERS, SINTER
​​Sorted Set​​ 带分数的有序集合,用于排行榜、延迟队列(按分数排序) ZADD, ZRANGE, ZREVRANK
​​Bitmap​​ 位图操作,高效统计二值状态(如签到、用户活跃) SETBIT, GETBIT
​​HyperLogLog​​ 基数估算,内存极小,用于 UV 统计(误差约 0.81%) PFADD, PFCOUNT
​​Stream​​ 日志流结构,支持消息队列(ACK、消费组),适合可靠消息传递 XADD, XREADGROUP

​​三、高可用与扩展​​

  1. ​​主从复制​​

    异步复制数据到从节点,支持读扩展和备份,但存在数据延迟风险。

  2. ​​哨兵模式(Sentinel)​​

    自动监控主节点状态,触发故障转移(选举新主节点)。

  3. ​​集群模式(Cluster)​​

    数据分片存储(16384 个哈希槽),支持水平扩展,需注意跨槽操作限制。


​​四、内存管理与性能优化​​

  1. ​​内存淘汰策略​​

    设置 maxmemory限制,配置策略如 volatile-lru(淘汰最近最少使用的带过期时间的键)。

  2. ​​持久化与恢复​​

    • RDB 优先用于快速恢复,AOF 用于数据完整性。

    • 混合持久化(AOF + RDB)平衡性能与数据安全。

  3. ​​性能优化技巧​​

    • 使用管道(Pipelining)减少 RTT。

    • 避免 KEYS *、SMEMBERS等 O(N) 命令,改用 SCAN分页。

    • 热点数据分散存储,避免单点瓶颈。


​​五、常见问题与解决方案​​

  1. ​​缓存穿透​​

    • 问题:查询不存在的数据导致数据库压力大。

    • 方案:缓存空值或使用布隆过滤器。

  2. ​​缓存击穿​​

    • 问题:热点数据过期后大量请求涌入数据库。

    • 方案:互斥锁(Redisson)或逻辑过期(异步重建)。

  3. ​​缓存雪崩​​

    • 问题:大量 Key 同时失效。

    • 方案:为 TTL 添加随机值,分散失效时间。


​​六、典型应用场景​​

  • ​​缓存​​:减轻数据库压力,提升响应速度。

  • ​​分布式锁​ ​:通过 SETNX或 RedLock 实现资源互斥访问。

  • ​​消息队列​​:基于 List 或 Stream 实现异步通信。

  • ​​排行榜​​:利用 Sorted Set 按分数排序。


​​七、常用命令示例​​

复制代码
# 字符串操作
SET key value       # 设置键值
GET key             # 获取键值

# 哈希操作
HSET user name "Alice"  # 存储对象字段
HGETALL user          # 获取所有字段及值

# 列表操作
LPUSH task "task1"    # 左端插入元素
RPOP task             # 右端弹出元素

# 事务操作
MULTI               # 开启事务
EXEC                # 提交事务

通过合理选择数据结构和配置持久化策略,Redis 能在高性能场景下稳定运行。建议结合具体业务需求,参考官方网页及最佳实践。

相关推荐
工业HMI实战笔记1 小时前
印刷电路板HMI:SMT贴装的元件定位界面
制造·设计规范·设计语言·1024程序员节
Martina_03217 小时前
AI生成3D模型一合并网格,材质就串色?用6步检查材质槽、UV与图集重映射
图像处理·人工智能·3d·材质·uv·游戏策划·1024程序员节
橙光成长7 小时前
android-ad-cleaner:android免 Root 批量关闭系统开屏与营销推送
android·1024程序员节
燃烧的枫1 天前
Windows 下 YOLO11 Pose 的 TensorRT C++ 部署
windows·yolo·tensorrt·1024程序员节·yolo11-pose
AI日报派送佬1 天前
2026年11月02日 AI 行业日报|商汤开源 Loop-9B、Pika 发布 H3 Flex 音视频模型、Meta× 傅利叶推出人形机器人 Max
人工智能·微软·开源·音视频·openai·1024程序员节·ai日报
avi91111 天前
【AI教人】UnityEditor扩展Spine动画,Spine骨骼,预览Preview一切
spine·骨骼动画·1024程序员节·editor扩展·spine动画·spine骨骼
开开心心就好1 天前
网页图片批量下载工具,输入链接就保存
服务器·算法·leetcode·支持向量机·pdf·ocr·1024程序员节
Martina_03212 天前
AI生成的3D模型打印后沿层纹开裂?用6步检查方向、壁厚与填充
图像处理·人工智能·数学建模·3d·自然语言处理·游戏策划·1024程序员节
c_hn_0072 天前
量化数据12:国内期货L2历史数据:Tick、逐笔、五档盘口一次性打包下载
数据库·1024程序员节·#深度订单簿数据·#历史行情订单薄·#本地csv数据存储