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

redis面试复习

1.redis是单线程还是多线程

无论什么版本工作线程就是是一个,6.x高版本出现了IO多线程

单线程满足redis的串行原子,只不过IO多线程后,把输入/输出放到更多的线程里区并行,好处:

1.执行的时间更短,更快;2.更好的压榨系统以及硬件资源

2.redis存在线程安全的问题吗?为什么

redis可以保障的是内部串行,外界使用的时候要进行保障,业务上需要自行保障

3.缓存穿透

穿透 是没有这个数据,

解决方案:null key 或者布隆过滤器  可以考虑加锁来进行降低请求的次数 或者限流

4.缓存击穿

热点key过期了(或者某个key突然之间成了热点key,但是这个key还没来得及缓存)

解决方案:可以考虑加锁来进行降低请求的次数  或者限流

5.缓存雪崩如何处理

缓存穿透,缓存击穿,缓存雪崩这些现象的本质都是缓存中不存在数据,导致了大量的请求直接到数据库的层面上,让数据库承担了很大的压力,针对这种情况,肯定是要想办法来进行降级对数据库的一些请求量,可以通过加锁来进行降低对数据的压力,加锁完成之后 还是要进行想办法将数据存储到缓存中来

6.缓存是如何回收的

1.后台在轮询,分批分批的删除的过期的key,

2.请求的时候 删除已经过期的key

7.缓存如何进行预热

提前把数据放到redis中,击穿,雪崩的时候 可以将一些数据提前缓存到redis中。

8.缓存和数据不一致 如何进行解决

可以基于canal的binlog同步

9.简述一下主从不一致的问题

redis是弱一致性,锁不能用主从,用单实例/分片集群/redlock 

在配置文件中配置必须有多个client链接能同步,趋于强一致性


 


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

相关文章:

  • Win11+WLS Ubuntu 鸿蒙开发环境搭建(一)
  • openwrt 清缓存命令行
  • FastDeploy部署paddlecls分类模型(windows)
  • unity学习11:地图相关的一些基础
  • (leetcode算法题)384. 打乱数组 398. 随机数索引
  • 松鼠状态机流转-@Transit
  • Spring Shell如何与SpringBoot集成并快速创建命令行界面 (CLI) 应用程序
  • QT5 Creator (Mingw编译器) 调用VS2019 (阿里云 oss C++库) 报错的解决方法
  • Python毕业设计选题:基于django+vue的智慧社区可视化平台的设计与实现+spider
  • 快速学习GO语言总结
  • livekit 服务部署
  • 计算机的错误计算(一百七十一)
  • SQL进阶——聚合函数与分组
  • 给定一个整数可能为正,0,负数,统计这个数据的位数.
  • 【NebulaGraph】深入了解查询语句(二)
  • 数据结构 (21)树、森林和二叉树的关系
  • Leetcode20. 有效的括号(HOT100)
  • FUSU: 多源多时相土地利用变化分割数据集
  • CTF中可能遇到的php函数
  • 数据分析自动化工具对比指南Cursor Composer和Google Data Science Agent
  • Hadoop批量计算实验
  • spring知识点复习--针对面试的
  • 计算机基础 原码反码补码问题
  • sizeof和strlen区分,(好多例子)
  • 【Python中while循环】
  • Python的字符串编码