redis(3)

本文介绍Redis主从复制原理及优势,包括读写分离、降低压力和数据备份。探讨哨兵模式下的自动故障恢复,以及Redis作为缓存的两种存储方式:永久存在与设置过期时间。分析不同策略下的数据同步和内存管理,确保高可用性和一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis

主从复制

主从复制可以扩展redis的性能,比单机版的redis性能更加的稳定,redis的主从复制和关系型数据库的主从复制差不多。从机能精确的从主机复制信息。

主从复制的优点 :
(1) 实现读写分离

(2) 降低master的压力

(3) 实现数据的备份

启动几个redis实例后 :

127.0.0.1:6380> slaveof 127.0.0.1 6379

这样6380就成为了6379的从节点了

主从复制需要注意的地方

如果master已经运行了一段时间,slave才连上来,此时slave会对master的所有数据进行同步,而不是从连接上的时间点同步!
master节点可读可写,但是slave节点只读不可写(如果非要写可以修改redis.conf文件中的slave-read-only的值来实现)
在当前的这个主从结构中,如果master挂点,重启后依然还是master,主从操作依然可用。

哨兵模式

在主从模式的Redis系统中,从数据库在整个系统中起到了数据冗余备份和读写分离的作用,但是当数据库遇到异常中断服务后,我们只能通过手动的方式选择一个从数据库来升格为主数据库,显然这种方式很麻烦需要人工介入,这时通过哨兵模式可以实现自动化的系统监控和故障恢复。

主要作用 :

监控redis主数据库和从数据库的状态

如果主数据崩溃 ,将自动选一个从数据库当选主数据库

redis的缓存

缓存(Cache)的作用是减少服务器对数据源的访问频率,从而提高数据库的稳定性。

redis缓存就是,程序会先在redis缓存里查询,如果存在查询结果就不会去数据源里查询了 , 如果数据源里没有才会去数据源里查询。

缓存方式
  缓存中的数据在redis中的存储方式有两种,一种是永久存在,不设置过期时间,第二种是设置过期时间。这两种方式都需要尽可能的保证数据的一致性(和数据源中的数据保持同步)。

不设置过期时间
  当我们将缓存数据的key设置为永久存在时会存在数据同步和内存消耗逐渐增大的情况,解决方式如下:
数据同步:

禁止直接操作数据源,避免因数据源直接被改动而造成缓存数据不一致的问题
如果有其他系统操作同一个数据源,这种情况肯定会产生数据不一致的情况。
系统执行DML操作时,应该将缓存中对应的数据删除。用户下一次相关请求时直接从数据源中获取。
内存消耗:
  随着业务的增多,缓存数据必然会越来越多,所占用的内存也随之增多,系统的压力也会变大,这时一种方式是给key设置过期时间,但是过期时间长短不太好把握,这时我们可以通过设置redis最大内存来实现,并让Redis按照一定的规则淘汰不需要的缓存键,这种方式在redis只作为缓存使用时非常实用。
具体实现方式:修改redis配置文件(redis.conf)中的maxmemory参数既可,限制Redis最大可用内存大小(单位字节),当超出了这个限制时Redis会依据maxmemory-policy参数指定的策略来删除不需要的key直到Redis占用的内存小于指定内存。

LRU:(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”
LFU:(Least Frequently Used)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。

2.2设置过期时间
  对保存到Redis中的key设置过期时间,但同样也会遇到问题,比如过期时间怎么设置,内存资源同样也会过大。
内存资源
  同样需要设置maxmemory来限制redis使用的最大内存和配置maxmemory-policy来指定删除策略。
过期时间设置
  过期时间不要设置统一固定的时间,比如60分钟,这样会造成相同时间点大量缓存被清空,数据库访问量突然增大的情况,我们应该对过期时间设置合理范围内的随机值。比如:采取不同分类商品,缓存不同周期。在同一分类中的商品,加上一个随机因子。这样能尽可能分散缓存过期时间,而且,热门类目(女装)的商品缓存时间长一些,冷门类目(图书)的商品缓存时间短一些,也能节省缓存服务的资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值