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