Redis2

redis与数据库信息同步 读写一致性

结合项目需要让数据库和redis中的数据保持一致 也就是强一致性  因为时效性比较高 所以加锁

采用读写锁来保证强一致性

redission实现的读写锁 在读的时候添加共享锁 保证读不互斥 读写互斥

更新数据的时候 添加排他所 读写 读读都互斥

然后注意读和写方法都是加一把锁

排他锁原理

底层也是setnx  保证了同时只有一个线程操作锁住的方法

延时双删

如果是写操作 先删除缓存的数据 然后更新数据库 在设置延时时间 延时删除缓存中的数据

缺点 延时时间不好控制 可能会导致脏数据

redis与数据库信息同步 也可以说成异步的角度

数据同步也有一定的延时 采用阿里的canal组件实现数据库同步 不需要更改代码

部署一个canal服务 把自己伪装成mysql的一个从节点 当mysql更新以后 canal会读取binlog数据

然后在通过canal的客户端获取导数据 更新缓存即可

redis作为缓存 如何保证数据的持久化

RDB和AOF

RDB是一个快照文件 把redis内存存储的数据写到磁盘上 当Redis实例宕机恢复数据的时候 方便从快照文件中恢复数据

AOF是追加文件 当redis操作写命令的时候 都会存储这个文件中 保存命令 当redis宕机的时候 会从这个文件中再次执行一遍命令

哪种方式恢复的比较快

RDB  二进制文件 保存的比较快 体积小 但是可能会丢数据

AOF 恢复速度慢 但是丢数据的可能小一点 可设置刷盘策略 每秒批量写入一次命令

数据过期策略

惰性删除和定期删除

惰性删除:不用管 反正都要设置过期时间 每次读key的时候检查一下是否过期就行 过期了就把数据删掉

定期删除: 每隔一段时间就对key进行检查 删除里边的过期key

        分为slow模式 设置频率定时任务

                FAST模式 执行频率不固定

数据淘汰策略

redis里边默认的是 noeviction  不删除任何数据 内部不足直接报错

也可以在redis的配置文件里边设置

LRU最少最近使用

LFU最少频率使用

面试官:数据库有1000万数据 ,Redis只能缓存20w数据, 如何保证Redis中的
数据都是热点数据 ?

可以使用allkeys-lru 挑选最近最少使用的数据淘汰策略 留下来的都是经常访问的热点数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值