当前位置: 首页 > news >正文

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 挑选最近最少使用的数据淘汰策略 留下来的都是经常访问的热点数据


http://www.mrgr.cn/news/53459.html

相关文章:

  • Scala的sortedWith
  • Java集合常见知识总结(中)
  • 从开发板传送文件回本地
  • 【在Linux世界中追寻伟大的One Piece】应用层自定义协议|序列化
  • 19.面试算法-树的深度优先遍(一)
  • 008、相交链表
  • (01)fastapi的基础学习——开启学习之路
  • JavaScript (基础)
  • 【力扣打卡系列】滑动窗口与双指针(两数之和)
  • 优化漏洞扫描流程以保障企业数字化业务安全
  • 【AI学习】Mamba学习(八):HiPPO通用框架定义和方法
  • 小白学电路之电流镜仿真
  • OpenLayers:用于在 web 应用程序中创建互动地图
  • 目标检测最新SOTA模型D-FINE
  • 【分布式微服务云原生】《Redis 分布式锁的挑战与解决方案及 RedLock 的强大魅力》
  • UG NX12.0建模入门笔记:1.1 UG界面编辑
  • 【Gitee版】一篇教你如何快速入门git(详解)
  • Android 下通过触发 SIGTRAP 信号实现反调试
  • Broker 模式
  • 使用Git进行版本控制