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

相关推荐
写点什么呢18 小时前
Word使用记录
word·1024程序员节
开开心心就好19 小时前
内存清理工具点击清理,自动间隔自启
linux·运维·服务器·安全·硬件架构·材料工程·1024程序员节
开开心心就好2 天前
内存清理工具开源免费,自动优化清理项
linux·运维·服务器·python·django·pdf·1024程序员节
张萌杰5 天前
深度学习的基础知识(常见名词解释)
人工智能·深度学习·机器学习·1024程序员节
开开心心就好6 天前
免费无广告卸载工具,轻便安全适配全用户
linux·运维·服务器·网络·安全·启发式算法·1024程序员节
开开心心就好6 天前
图片格式转换工具,右键菜单一键转换简化
linux·运维·服务器·python·django·pdf·1024程序员节
徐子童9 天前
网络协议---TCP协议
网络·网络协议·tcp/ip·面试题·1024程序员节
扫地的小何尚10 天前
NVIDIA RTX PC开源AI工具升级:加速LLM和扩散模型的性能革命
人工智能·python·算法·开源·nvidia·1024程序员节
数据皮皮侠AI11 天前
上市公司股票名称相似度(1990-2025)
大数据·人工智能·笔记·区块链·能源·1024程序员节
开开心心就好12 天前
系统清理工具清理缓存日志,启动卸载管理
linux·运维·服务器·神经网络·cnn·pdf·1024程序员节