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 能在高性能场景下稳定运行。建议结合具体业务需求,参考官方网页及最佳实践。

相关推荐
开开心心就好4 天前
开源免费高速看图工具,支持漫画大图秒开
linux·运维·服务器·安全·ruby·symfony·1024程序员节
unable code7 天前
磁盘取证-Flying_High
网络安全·ctf·misc·1024程序员节·磁盘取证
unable code8 天前
磁盘取证-ColorfulDisk
网络安全·ctf·misc·1024程序员节·内存取证
unable code9 天前
磁盘取证-[第十章][10.1.2 磁盘取证方法]磁盘取证1
网络安全·ctf·misc·1024程序员节·内存取证
开开心心就好10 天前
免费抽奖工具支持批量导入+自定义主题
linux·运维·服务器·macos·pdf·phpstorm·1024程序员节
开开心心就好15 天前
卸载工具清理残留,检测垃圾颜色标识状态
linux·运维·服务器·python·安全·tornado·1024程序员节
子燕若水16 天前
Facebook reels 运营指南
1024程序员节
尘觉19 天前
创作 1024 天|把热爱写成长期主义
数据库·1024程序员节
写点什么呢19 天前
Word使用记录
word·1024程序员节
开开心心就好20 天前
内存清理工具点击清理,自动间隔自启
linux·运维·服务器·安全·硬件架构·材料工程·1024程序员节