凡科建站手机网站建设,wordpress postmeta表,河南艾特 网站建设公司,wordpress 9.0apk1. Redis 的特点及与 Memcached 的区别 特点#xff1a; 基于内存的键值数据库#xff0c;支持持久化#xff08;RDB/AOF#xff09;。 单线程模型#xff0c;通过 IO 多路复用实现高并发。 支持多种数据结构#xff1a;字符串、哈希、列表、集合、有序集合等。 提供…1. Redis 的特点及与 Memcached 的区别 特点 基于内存的键值数据库支持持久化RDB/AOF。 单线程模型通过 IO 多路复用实现高并发。 支持多种数据结构字符串、哈希、列表、集合、有序集合等。 提供事务、发布订阅、Lua 脚本等功能。 与 Memcached 区别 数据持久化Redis 支持数据落盘Memcached 纯内存。 数据类型Memcached 仅支持字符串Redis 支持复杂数据结构。 内存管理Redis 采用虚拟内存机制Memcached 使用预分配内存池。 2. Redis 的持久化机制RDB vs AOF RDB快照 定时生成内存快照dump.rdb恢复速度快。 缺点可能丢失最后一次快照后的数据。 触发方式SAVE阻塞/ BGSAVE后台异步。 AOF追加日志 记录所有写操作命令appendonly.aof数据安全性高。 支持三种同步策略always每次写同步、everysec每秒同步默认、no由系统决定。 缺点文件体积大恢复速度慢。 混合持久化Redis 4.0 结合 RDB 和 AOF重启时先加载 RDB 快照再重放 AOF 增量命令。 3. Redis 的内存淘汰策略
Redis 提供 6 种策略通过 maxmemory-policy 配置 volatile-lru从已设置过期的数据中淘汰最近最少使用的。 volatile-ttl淘汰即将过期的数据。 volatile-random随机淘汰已过期的数据。 allkeys-lru全局淘汰最近最少使用的数据推荐。 allkeys-random全局随机淘汰。 noeviction禁止淘汰新写入操作报错。 4. Redis 事务与 CAS 乐观锁 事务流程 MULTI 开启事务 → 命令入队 → EXEC 执行或 DISCARD 取消。 事务中的命令按顺序执行但不保证原子性单条命令失败不影响后续执行。 CAS 实现 使用 WATCH 监控键若事务执行前键被修改则事务回滚。 示例 WATCH key
val GET key
val val 1
MULTI
SET key val
EXEC 5. Redis 单线程模型为何高效 核心原因 纯内存操作无磁盘 I/O 瓶颈。 基于 Reactor 模式的非阻塞 IO 多路复用epoll/kqueue。 单线程避免多线程上下文切换和竞争问题。 C 语言实现底层优化充分。 6. 缓存穿透、击穿、雪崩的解决方案 穿透查询不存在的数据 布隆过滤器拦截非法请求。 缓存空值并设置短过期时间。 击穿热点 key 失效后高并发访问数据库 使用互斥锁如 Redis 的 SETNX保证单线程重建缓存。 雪崩大量 key 同时过期 分散过期时间如基础时间 随机偏移。 永不过期策略 异步更新。 7. Redis 分布式锁的实现 核心命令 SET lock_key unique_value NX EX 30 # 原子性加锁并设置超时 注意事项 锁需设置超时时间防止死锁。 释放锁时需验证值避免误删其他线程的锁。 可结合 Redlock 算法实现多节点锁。 8. Redis 集群方案 主从复制 主节点Master写从节点Slave读支持数据同步。 缺点主节点单点故障。 哨兵模式Sentinel 监控主从节点自动故障转移。 Cluster 模式 数据分片16384 个哈希槽支持水平扩展。 节点间通过 Gossip 协议通信自动故障恢复。 9. Redis 的 Pipeline 与 Pub/Sub Pipeline 将多个命令打包发送减少网络往返时间RTT提升吞吐量。 适用场景批量操作如批量写入数据。 Pub/Sub 发布订阅模式支持消息广播。 缺点消息不持久化消费者离线时消息丢失。 10. Redis 性能优化建议 内存优化 使用 ziplist、intset 等紧凑数据结构。 避免存储大 Key如单个 Value 超过 1MB。 持久化配置 主节点关闭 RDB/AOF从节点开启 AOF。 集群部署 分片避免数据倾斜分散热点 Key。