当前位置: 首页 > news >正文

Redis资料

 Redis是什么?

Redis(Remote Dictionary Server)是一个开源的、基于内存的键值数据库,支持多种数据结构,可用作数据库、缓存和消息中间件。主要特点包括:

  • 基于内存操作,读写性能极高
  • 支持持久化,可将内存数据保存到磁盘
  • 支持主从复制和高可用集群
  • 提供丰富的数据结构和操作命令
Redis为什么这么快?
  • 内存操作:数据存储在内存中,访问速度比磁盘快几个数量级
  • 单线程模型:避免多线程上下文切换和锁竞争
  • IO多路复用:使用epoll/kqueue等机制实现高效网络通信
  • 高效数据结构:专门优化的数据结构实现(如SDS、跳跃表等)
  • 单线程模型也造成cpu不能充分利用

Redis数据结构

1. 五种基本数据类型及使用场景
数据类型特点使用场景
String二进制安全,最大512MB缓存、计数器、分布式锁
List双向链表,元素可重复消息队列、最新消息排行
Hash键值对集合存储对象、购物车
Set无序唯一集合标签、共同好友
ZSet有序集合(带分数)排行榜、延时队列
2. 特殊数据类型
  • BitMap:二值统计(签到、在线状态)
  • HyperLogLog:基数统计(UV统计)
  • GEO:地理位置(附近的人)
  • Stream:消息流(替代Kafka)

3. 底层数据结构实现
String:SDS(简单动态字符串),支持动态扩容和二进制安全
List:3.2版本前使用ziplist或linkedlist,3.2后统一使用quicklist
Hash:ziplist(元素少时)或hashtable
Set:intset(整数集合)或hashtable
ZSet:ziplist或skiplist+dict组合

三、Redis持久化机制

1. RDB与AOF对比
维度RDBAOF
原理定时快照记录写操作日志
性能高(二进制压缩)较低(文本追加)
恢复速度慢(需重放命令)
数据完整性可能丢失最后一次快照后的数据更可靠
文件大小

四、Redis高可用架构

1. 主从复制
  • 作用:数据冗余、读写分离、故障恢复
  • 同步过程
    • 全量同步:从节点初次连接时,主节点生成RDB发送给从节点
    • 增量同步:主节点将写命令发送给从节点
2. 哨兵模式(Sentinel)

是一种用于构建高可用性 Redis 集群的解决方案。它通过监控 Redis 实例的状态并自动进行故障转移,提供了客户端重定向机制以确保应用程序可以正常访问 Redis

  • 功能:监控、自动故障转移、配置中心

图片转载自

3. Redis Cluster
  • 数据分片:16384个slot,每个节点负责部分slot
  • 优点:支持海量数据存储和高并发写
  • 限制:不支持跨slot事务,多key操作需使用hash tag

五、Redis缓存问题与解决方案
1. 缓存穿透
现象:查询不存在的数据,绕过缓存直接访问数据库
解决方案:
布隆过滤器拦截
缓存空对象(设置短过期时间)

对业务参数进行校验,不合法的值直接返回
2. 缓存击穿
现象:热点key过期瞬间,大量请求直接访问数据库
解决方案:
互斥锁(如Redis分布式锁)
热点数据永不过期
3. 缓存雪崩
现象:大量key同时过期,导致请求直接访问数据库
解决方案:
设置随机过期时间,均匀分布key的失效时间
多级缓存
熔断降级机制

六、Redis内存管理

1. 过期键删除策略
  • 惰性删除:访问时检查是否过期,过期则删除
  • 定期删除:定时随机检查并删除过期键

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/weixin_47242663/article/details/149520081

http://www.dtcms.com/a/347641.html

相关文章:

  • JAVA读取项目内的文件或图片
  • springboot项目结构
  • Axure:如何打开自定义操作界面
  • 顺序表(ArrayList)
  • 刷题日记0823
  • [特殊字符] 数据库知识点总结(SQL Server 方向)
  • MySQL:事务管理
  • games101 作业0 环境搭建与熟悉线性代数库
  • H264编解码过程简述
  • 数据结构 -- 哈希表
  • RAGFlow (一) 开发环境搭建
  • imx6ull-驱动开发篇37——Linux MISC 驱动实验
  • [机械结构设计-18]:Solidworks - 特征(Feature)是构成三维模型的基本单元,是设计意图的载体,也是参数化设计的核心。
  • 深入剖析分布式事务的Java实现:从理论到Seata实战
  • c语言中enum与#define的用法区别
  • 算法题(189):食物链
  • 如何利用数据库事务,来防止数据不一致的问题
  • 云原生概述
  • [e3nn] 归一化 | BatchNorm normalize2mom
  • 自然语言处理——06 迁移学习(上)
  • MATLAB实现CNN-LSTM-Attention 时序和空间特征结合-融合注意力机制混合神经网络模型的风速预测
  • 云计算-K8s 运维:Python SDK 操作 Job/Deployment/Pod+RBAC 权限配置及自定义 Pod 调度器实战
  • Kubernetes相关问题集(四)
  • 「数据获取」《贵港统计年鉴》(2008-2023)(2016、2017缺失)(获取方式看绑定的资源)
  • 开发指南134-路由传递参数
  • 【KO】前端面试七
  • 科研笔记:博士生手册
  • n8n热门的开源 AI 工作流平台实操
  • git实战(7)git常用命令速查表
  • C++实现常见的排序算法