Redis框架介绍
一、简介
1. Redis是完全开源免费的,是一个高性能的key-value类型的内存数据库。
2. 整个数据操作都是在内存中进行,定期通过异步操作把数据库数据flush到硬盘上进行保存。
3. 支持五种数据类型 String、Hash、List、Set、ZSet
3.1 String是redis最基本数据类型。一个key对应一个value,值最大能存储512MB。
3.2 Hash是一个键值对的集合,Redis hash是一个String类型的key-value映射表,适合存储对象。
3.3 Redis列表是简单的字符串列表,List内元素可重复,可以做消息队列或最新消息排行等。
3.4 Set是Redis字符串类型的无序集合。集合是通过哈希表实现的,因此添加、删除、查询时间复杂度都是O(1)。set中一个key对应多个字符串的value,集合元素不重复。
3.5 ZSet是Redis字符串类型的有序集合,集合元素不重复。
二、特性
1. 可用于缓存,消息(支持 publish/subscribe 通知),按key设置过期时间,过期后将会自动删除,具体淘汰策略有:
1.1 volatile-lru:从已经设置过期时间的数据集中,挑选最近最少使用的数据淘汰
1.2 volatile-ttl:从已经设置过期时间的数据集中,挑选即将要过期的数据淘汰
1.3 volatile-random:从已经设置过期时间的数据集中,随机挑选数据淘汰
1.4 allkeys-lru:从所有的数据集中,挑选最近最少使用的数据淘汰
1.5 allkeys-random:从所有的集合中,随机挑选数据淘汰
1.6 no-enviction:禁止淘汰数据
具体过期键的策略有:定时删除(缓存过期时间到就删除,创建timer耗CPU),惰性删除(获取的时候检查,不获取一直留在内存,对内存不友好),定期删除(CPU和内存的折中方案)
2. 支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
Redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)
RDB:在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本。如果系统发生故障,将会丢失最后一次创建快照之后的数据。如果数据量大,保存快照的时间会很长。
AOF:将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。将写命令添加到 AOF 文件(append only file)末尾。
RDB、AOF可同时使用,重启Redis优先使用AOF。
区别:RDB 生成快照 AOF 记录指令
(1)集群监控:负责监控Redis master和slave进程是否正常工作
(2)消息通知:如果某个Redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员
(3)故障转移:如果master node挂掉了,会自动转移到slave node上
(4)配置中心:如果故障转移发生了,通知client客户端新的master地址
5. 集群
至少部署两台Redis服务器构成一个小的集群,主要有2个目的:
(1)高可用性:在主机挂掉后,自动故障转移,使前端服务对用户无影响。
(2)读写分离:将主机读压力分流到从机上。
集群可以实现客户端组件的负载均衡,分担请求压力。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!