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