redis在项目中的应用
redis 是一种高性能的内存数据存储结构,常用于缓存,消息队列,计数器等场景.
1.可以当作缓存来使用 减轻数据库的压力
2.可以用来实现分布式锁保证多个线程同时操作共享资源的数据一致性
3.计数器 redis支持自增自减,可以用做计数器的实现
4.Redis的列表结构可以当作消息队列来使用
redis 的持久化
1.RDB持久化,定期将内存中的数据快照保存到磁盘里面,形成RDB文件,适合备份和恢复数据,在重启Redis的时候快速加载大量数据
2.AOF持久化,将所有写操作以追加写入AOF文件中,保证数据的可靠性.适合于数据的持久化和恢复,保证Redis数据不丢失
RDB方式可以在数据集比较大时快速恢复数据,但会有数据丢失的风险;而AOF方式可以保证数据的完整性,但会对性能造成一定的影响。
redis 的数据结构底层结构
1.String 底层采用动态字符串 SDS
-
Hash 底层是数组+链表
-
列表 底层采用双向链表实现
-
Set 底层是哈希表中键值对 键是 值 value是 null
-
有序Set 采用 hash和跳表 hash存储节点和权重 权重可以用来排序 跳表可以快速获取一个区间里面的节点
redis 过期机制
定时删除:redis使用一个键值对定期检验所有键的过期时间,如果时间过了就把他删掉,
惰性删除:执行redis读写操作的时候,Redis会检查键是否过期,并在发现过期时立即删除该键。
redis的集群
-
分片存储和负载均衡:Redis集群将数据分成多个分片(slot),每个分片可以分布在不同的节点上,实现数据的分布式存储和负载均衡,从而提高系统的吞吐量和性能。
-
数据复制和故障转移:每个分片都有多个副本,其中一个是主节点,其他是从节点。主节点负责写操作,从节点负责读操作,同时还可以作为主节点的备份。当主节点故障时,系统会自动选举从节点中的一个作为新的主节点,实现故障转移。
-
高可用性:Redis集群通过多节点、数据复制和故障转移等机制,保证了数据的高可用性。即使有节点故障,也能够保证数据的正常访问和使用。
-
动态扩缩容:Redis集群支持动态添加和移除节点,可以根据业务需求随时进行扩容和缩容操作,而不会影响到系统的正常运行。
-
配置中心:Redis集群提供了中心化的配置管理,通过一个特殊的节点(Cluster Bus)来协调和传递配置信息,确保所有节点都具有一致的配置。
-
槽指派:Redis集群使用哈希槽(slot)来管理数据分片,每个槽对应一个键值,系统通过哈希算法将键映射到不同的槽中,实现数据的分布式存储。
在搭建Redis集群时,需要注意以下几点:
- 每个节点之间要进行网络互通,可以通过内网或者专用网络进行连接。
- 集群的规模和节点数量要根据实际业务需求和负载情况来决定,通常至少需要3个主节点。
- 配置文件和命令行参数需要正确设置,确保节点能够正确识别彼此,并加入到集群中。
- 常规维护工作,如节点的添加、移除、故障转移等,需要根据Redis官方文档进行操作。