redis高频面试题(一)

redis 相关面试题

1. 列举redis 常用的数据类型 和项目中的实际应用

5大常用数据类型:string, list, set, zset, hash
列举:
list 可以用来实现简单的队列消息(仅限简单)
set, zset 可以用来做集合, 交集, 并集, 比如 共同关注等
hash 可以存储具体信息。比如某个用户的用户信息

以自己实际项目为准最好

2. redis 是多线程的吗/redis是线程安全的吗

redis的工作线程(执行命令的线程)是单线程的
在redis6.0版本之后, 处理网络io等, 异步删除等操作是多线程的, 这并不影响 redis的执行命令

所以外部需要我们自己去保证线程安全

所以严格意义上来说 redis 的工作线程 还是单线程进行工作的/内部是线程安全的

3. redis的缓存穿透/雪崩/击穿 等

这几个问题虽然处理方法有所不同,但是本质上都是一样的
场景: redis 作为缓存, db作为数据库, 接口压力都穿过缓存到达db

穿透: 访问一个redis中不存在的数据, 直接到达数据库
通用解决方法: 缓存空对象,并设置过期时间; 布隆过滤器;

说一下方法的缺点:
空对象会占用内存, 如果数据较多 内存浪费严重
短暂的数据不一致, 在空对象过期时间内, 数据可能会出现变化

布隆过滤器存在误判的可能性
数据不一致, 布隆过滤器无法删除数据

雪崩: 大量key在同一时间(短时间)过期

设置过期时间时,末尾加上随机数

缓存击穿: 热点key 过期的瞬时 请求压力

加锁:比如 互斥锁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值