Java之Redis大纲 面试必备
2024-01-11 09:53:04 42 举报
AI智能生成
Java之Redis大纲 面试必备
作者其他创作
大纲/内容
说一下你在项目中的redis的应用场景
数据结构
string
分布式锁
单值缓存
文章访问量
计数器
服务无状态
session共享
hash
list
set
zset
场景
redis是单线程还是多线程
无论什么版本,工作线程就是一个
6.x高版本出现了IO多线程
面向IO模型编程的时候,有内核的事,从内核把数据搬运到程序里这是第一步,然后,搬运回来的数据做的计算式第二步
单线程,满足redis的串行原子,只不过IO多线程后,把输入/输出放到更多的线程里去并行,好处如下:
1,执行时间缩短,更快;
2,更好的压榨系统及硬件的资源(网卡能够高效的使用)
1,执行时间缩短,更快;
2,更好的压榨系统及硬件的资源(网卡能够高效的使用)
redis存在线程安全的问题吗?为什么?
redis可以保障内部串行
外界使用的时候要保障,业务上要自行保障顺序
缓存现象
缓存穿透
key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。
key = null
布隆过滤器
缓存击穿
key对应的数据存在,但在redis中过期、从来没被缓存的,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮
缓存雪崩
当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力。
Redis是怎么删除过期key的?
1,后台在轮询,分段分批的删除哪些过期的key
2,请求的时候判断时候已经过期了
尽量的把内存无用空间回收回来~!
2,请求的时候判断时候已经过期了
尽量的把内存无用空间回收回来~!
缓存如何回收的
1,后台在轮询,分段分批的删除哪些过期的key
2,请求的时候判断时候已经过期了
尽量的把内存无用空间回收回来~!
2,请求的时候判断时候已经过期了
尽量的把内存无用空间回收回来~!
缓存是如何淘汰的
0,内存空间不足的情况下:
1,淘汰机制里有不允许淘汰
2,lru/lfu/random/TTL
3,全空间
4,设置过过期的key的集合中
1,淘汰机制里有不允许淘汰
2,lru/lfu/random/TTL
3,全空间
4,设置过过期的key的集合中
如何进行缓存预热?
1,提前把数据塞入redis,(你知道那些是热数据吗?肯定不知道,会造成上线很多数据没有缓存命中)
2,开发逻辑上也要规避差集(你没缓存的),会造成击穿,穿透,雪崩,实施456中的锁方案
3,一劳永逸,未来也不怕了
2,开发逻辑上也要规避差集(你没缓存的),会造成击穿,穿透,雪崩,实施456中的锁方案
3,一劳永逸,未来也不怕了
数据库与缓存不一致如何解决?
1,redis是缓存,更倾向于稍微的有时差
2,还是减少DB的操作
3,真的要落地,咱就canal吧
简述一下主从不一致的问题?
1,redis的确默认是弱一致性,异步的同步
2,锁不能用主从(单实例/分片集群/redlock)==>redisson
3,在配置中提供了必须有多少个Client连接能同步,你可以配置同步因子,趋向于强制一性
4,wait 2 0 小心
描述一下redis持久化原理?
当前线程阻塞服务 不聊
异步后台进程完成持久
fork + cow
异步后台进程完成持久
fork + cow
Redis有哪些持久化方式?
1,RDB,AOF;主从同步也算持久化;
2,高版本:开启AOF,AOF是可以通过执行日志得到全部内存数据的方式,但是追求性能:
2.1,体积变大,重复无效指令 重写,后台用线程把内存的kv生成指令写个新的aof
2.2,4.x 新增更有性能模式:把重写方式换成直接RDB放到aof文件的头部,比2.1的方法快了,再追加日志
Redis也打不住了,万级流量会打到DB上,该怎么处理?
见456
redis中的事务三条指令式什么,第三条指令到达后执行失败了,怎么处理
redis实现分布式锁的指令
为什么使用setnx?
1,好东西,原子(不存在的情况下完成创建)
2,如果要做分布式锁,就要用set k v nx ex (不存在,过期时间,避免死锁)
分布式锁实现
0 条评论
下一页