redis高级

本文深入探讨了Redis的高可用性,包括主从复制、哨兵系统和集群部署,强调了数据同步、命令传播和故障转移的重要性。此外,还讨论了缓存管理中的预热、雪崩、击穿和穿透问题及其解决方案,以及关键性能指标的监控。同时,提到了Redis的单线程与多线程特性及其在持久化和异步操作中的应用。
摘要由CSDN通过智能技术生成

ttl指令 查看key的剩余存活时间 -1永不失效 -2已经失效或不存在 正数剩余存活时间
过期数据也不是立即就删除的,有三种处理方式
1.定时删除 拿时间换空间 不建议
2.惰性删除 拿空间换时间
3.定期删除 折中方案 随机抽查,重点抽查
淘汰策略 当redis内存空间不足的时候将启动淘汰策略
三大类 1.检测易失数据 一般选 lru (最近最少使用) 或 lfu(最近使用次数最少)
2.检测全库数据
3.放弃数据驱逐

redis高可用 主从复制 一个master 多个slave master负责写并将数据同步到slave slave只负责读
主从复制的作用: 读写分离,负载均衡,数据冗余备份,故障恢复,高可用的基石
主从复制的流程
1.建立连接,slave连接master,互相保存ip和端口(可以启动后执行命令,也可以启动时就带着连接master的命令,主流的还是加在salve的配置文件中 加 slaveof master的ip master端口)
2.数据同步
3.命令传播

数据同步时的几点注意:
1.master数据量巨大的情况,数据同步应该避开流量高峰,以免造成master阻塞,影响正常业务.
2.复制缓存区的大小要设置合理(默认是1M).否则会造成内存溢出.等到slave复制完全量数据后发现部分缓冲数据丢失,又要重新同步.陷入死循环
3.redis内存大小设置服务器内存的50%-70%,剩下的30%-50%用于执 行bgsave命令和创建复制缓冲区
4.为避免全量复制部分复制时slave数据不同步可以先关闭服务,等数据同步完毕再提供服务 slave-serve-stale-data yes|no
5.多个slave需要同步数据,尽量错峰进行,避免同时进行占用大量带宽,影响正常业务

命令传播阶段,主要依靠的是,各服务器的runid,master的复制缓存区及偏移量,以及slave的复制偏移量.
进入命令传播阶段后,master和slave之间将通过心跳机制进行信息交换(默认master每10秒ping一下slave,slave每秒都向master发送数据偏移量,以及时更新数据)

最优复制缓冲区空间
1.测算从master到slave的重连平均时长second
2.获取master平均每秒产生写命令数据总量write_size_per_second
3.最优复制缓冲区空间 = 2 * second * write_size_per_second

哨兵,监控与通知,故障转移
redis-sentinel 配置文件(sentinel.conf) 启动哨兵
grep -v “**” 反向查找
sed “s/6379/6380/g” 6379.txt >6380.txt 将6379.txt复制一份到6380.txt 里面的6379全改成6380

redis集群cluster(多个主从分别存储一部分数据,共同对外提供服务) 分散存储压力实现可扩展 分散访问压力,实现负载均衡
将集群所有空间切成16384份(槽),每台主机保存一部分,集群访问,最多两次命中.

配置文件需做修改
cluster-enabled yes|no
cluster-config-file filename
cluster-node-timeout milliseconds
cluster-migration-barrier min_slave_number
最少6台,3主3从. 将6台redis分别启动 然后再执行创建集群命令,会自动分配槽及主从服务器. 并且主节点宕机后,从节点会自动变为主节点.实现了哨兵的功能

企业级解决方案
缓存预热就是系统启动前,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据!
缓存雪崩就是瞬间过期数据量太大,导致对数据库服务器造成压力。如能够有效避免过期时间集中,可以有效解决雪崩现象的 出现
缓存击穿就是单个高热数据过期的瞬间,数据访问量较大,未命中redis后,发起了大量对同一数据的数据库访问,导致对数 据库服务器造成压力。应对策略应该在业务数据分析与预防方面进行,配合运行监控测试与即时调整策略,毕竟单个key的过 期监控难度较高,配合雪崩处理策略即可。
缓存穿透是指访问了不存在的数据,跳过了合法数据的redis数据缓存阶段,每次访问数据库,导致对数据库服务器造成压力。通常此类数据的出现量是一个较低的值,当出现此类情况以毒攻毒,并及时报警。应对策略应该在临时预案防范方面多做文章。

redis的常用性能指标
响应请求的平均时间 latency
平均每秒处理请求总数 instantaneous_ops_per_sec
缓存查询命中率 hit_rate(calculated)
当前内存使用量 used_memory
当前客户端连接总数 connected_clients
key的总数 keyspace
当前服务器最后一次RDB持久化的时间 rdb_last_save_time
当前服务器最后一次RDB持久化后数据变化总量 rdb_changes_since_last_save
被拒绝连接的客户端总数(基于达到最大连接值的因素) rejected_connections
key未命中的总次数 keyspace_misses
主从断开的秒数 master_link_down_since_seconds

redis工作线程是单线程的,但是整个redis是多线程的. 它的持久化,异步删除,集群数据同步等是由额外线程执行的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值