Redis面试常见问题
2021-08-14 12:09:52 16 举报
AI智能生成
Redis面试常见问题、包括缓存穿透、击穿、雪崩、降级、热数据、冷数据
作者其他创作
大纲/内容
数据类型(常见五种)
String
常规的set、get操作
可一些复杂的计数功能
hash
对象存储
单点登录,以cookieId做key,存储用户信息
list
简单消息队列(先进先出)
利用range命令可做基于redis的分页
set
存放不重复值的集合
在集群环境下可做全局去重功能
sorted set(zset)
比set多了权重参数score
可做排行榜应用,取Top N操作
redis为何查询很快
纯内存操作
单线程,避免频繁的上下文切换
采用了非阻塞I/O多路复用机制
常见性能问题与解决方案
最好别做持久化工作,如:rdb快照、aof日志文件
若数据比较重要,开启某个slave的aof备份数据,策略设置每秒同步一次
为保证主从复制的性能与连接稳定,最好master和slave在同一个局域网内
尽量避免在压力很大的主库增加从库
缓存并发场景问题
缓存穿透
缓存不存在时,设置null值,并设置过期时间(30s)
布隆过滤器
接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截
缓存击穿
热点数据永不过期
加锁、使用分布式锁!
使用redisson、zookeeper分布式锁
缓存雪崩
缓存失效时间分散开
加锁机制
缓存预热
直接写个缓存刷新页面,上线时手工操作
若数据量不大,则可在项目启动时自动进行加载
定时刷新缓存
缓存更新
定时去清理过期的缓存
当用户请求过来时,先判断该缓存是否过期,若过期则更新缓存
缓存降级
降级可参考日志级别设置预案
一般
服务偶尔因网络抖动或上线超时,自动降级
警告
一些服务在一段时间内有成功率波动(95%-100%之间)
错误
可用率低于90%,数据库被连接池打爆,自动\人工降级
严重错误
数据库错误了,脏数据等情况,紧急人工降级
目的
防止redis服务故障,引发的雪崩问题
对于不重要的数据,可采取服务降级策略,redis出问题了,直接返回默认结果给用户
memcache与redis区别
存储方式
memcache数据全都存在内存,断电则全部失效
redis一部分存在硬盘,可持久化数据
支持类型
memcache所有值均为简单字符串
redis有string、list、set、hash、sorted set等数据结构
value值大小不同
redis最大可达1GGB
memcache只有1mb
性能
redis比memcache速度快很多
备份
redis支持数据备份,主从复制方式
0 条评论
下一页