栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

redis的AOF持久化流程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

redis的AOF持久化流程

RDP数据快照储存(丢失数据的概率比较高,很可能完成不了最后一次数据的存储)

AOF命令储存(AOF健壮性更强,有可读的日志文件可以处理操作,但是耗内存(尤其是持久化策略选择always的时候),也有重写AOF文件的设定可以压缩文件容量)

都是先存储到缓存这种再进行持久化储存

使用场景:如果数据相对不是很敏感,推荐使用RDP就可以,不要单独启用AOF(不适合备份,并且可能有bug),如果只是做缓存要求的话可以两个都不使用;

 

 

 

 

 

 

 

 --

主从结构

(主服务器来写入操作,子服务器来读取,分散压力)

从服务器挂掉后重新启动会认为自己是主服务器,

此时重新slaverof会恢复为从服务器,并且恢复主服务器的所有数据

 主服务器挂掉后从服务器会等待主服务器重新恢复(哨兵模式可以自动让其中一个子服务器变成主服务器继续运行)

--

哨兵模式:监视主机,如果主机挂了,从机会变成主机,主机恢复之后也只会成为从机

排序根据奴隶浓度等指标

---

集群:多个主从 结构的集合可以相互访问,就减少了服务器设置的压力

---

几个缓存问题

1.缓存穿透(炮弹)

(被攻击,缓存命中率低,疯狂查询数据库不存在数据)

 1.服务器压力变大2.缓存中数据不足够3.一直访问数据库,导致过载

2.错误的访问导致一直访问数据库出现问题

 

2.缓存击穿(针尖 )

 1.某个key已经过期了,但是大量的访问这个key最终造成数据库压力变大

 ---

雪崩问题

大量key同时过期,对数据库的过载访问

 

 --

2.分布式锁

 

         在一个操作没有完成的时候 加上了锁 其他操作需要等待

        分布式锁所解决的问题:

        在分布式集群中对单一分布上锁的时候其他机器并不知道已经上锁,因此利用分布式锁(共享锁)进行实现;利用setnx进行上锁,可以用del来释放锁,也可以利用expire time来设置过期时间(但是这非原子),因此可以利用set key value nx ex time方式来进行加锁与释放的操作.(在java中利用lua来进行原子操作)

        :1.设置锁,

        2.对其他数据进行访问操作

        3.操作结束释放锁

        4.(如果得到锁失败那么就沉睡下次再次尝试(递归))

但是这如果出现以下问题,在操作时错误的锁释放会导致问题;

 利用uuid来作为锁的value值,

在释放锁的时候,先判断当前uuid与要释放锁的uuid是否相同,作为上述的2.5步骤

但是此时仍并不是原子性操作

 

利用lua进行原子性操作

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/310067.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号