Redis概述Redis是一个开源的基于Key-Value结构的NoSQL内存数据库。通常作为数据库与应用程序之间的缓存层主要目的是减少数据库I/O压力。二、Redis工作流程用户请求数据时首先查询Redis缓存若缓存命中直接返回数据若未命中则查询数据库将数据库查询结果返回给用户同时写入Redis缓存三、Redis核心优势3.1 性能卓越极致读写速度纯内存操作响应时间常低于1毫秒持久化保障支持RDB和AOF两种持久化方式高可用性主从模式数据备份确保服务可靠性3.2 丰富数据结构常用数据结构特点与应用String基础数据类型存储文本、数字等List双向链表有序且可重复Hash键值对集合适合存储对象Set无序集合元素唯一支持集合运算ZSet有序集合带分值排序3.3 特殊数据类型Geospatial地理位置计算如附近的人Hyperloglog基数统计如UV统计Bitmap位图操作如用户签到、在线状态四、核心数据结构深度解析4.1 String字符串特点最基础的数据类型二进制安全可存储文本、数字、序列化对象常用命令SET user:1 张三 # 设置键值 GET user:1 # 获取值 INCR article:100:views # 自增计数器 APPEND key 追加内容 # 字符串追加应用场景缓存会话、Token、验证码实现计数器点赞数、浏览量分布式锁SETNX命令4.2 Hash哈希特点field-value映射表适合存储对象支持部分字段更新常用命令HSET user:1 name 李四 age 25 # 设置多个字段 HGET user:1 name # 获取单个字段 HGETALL user:1 # 获取所有字段应用场景用户信息、商品详情等结构化数据需要频繁更新部分属性的场景4.3 List列表特点有序双向链表支持两端操作元素可重复新增删除效率高常用命令LPUSH tasks 任务A # 左端插入 RPUSH tasks 任务B # 右端插入 LRANGE tasks 0 -1 # 获取全部元素应用场景消息队列FIFO/LIFO最新动态、时间轴待办事项列表4.4 Set集合特点无序集合元素唯一支持交集、并集、差集运算常用命令SADD tags 技术 编程 # 添加元素 SINTER java_users python_users # 求交集应用场景标签系统、兴趣推荐共同好友、关注关系数据去重UV统计4.5 ZSet有序集合特点带分值的排序集合元素唯一按分值自动排序常用命令ZADD leaderboard 1000 玩家A # 添加带分值元素 ZREVRANGE leaderboard 0 9 # 获取前十名应用场景排行榜、热点排序优先级队列延时任务五、Redis部署架构5.1 部署模式对比模式特点适用场景单机模式部署简单存在单点故障风险开发测试环境主从模式读写分离数据同步中小型生产环境哨兵模式自动故障转移监控告警对高可用有要求的场景Cluster模式分布式架构数据分片大数据量高并发场景5.2 哨兵模式深度解析核心功能集群监控每秒发送ping命令检测节点状态故障转移主节点故障时自动提升从节点配置中心客户端自动发现新的主节点5.3 哈希槽机制