Redis专项

参考: https://blog.csdn.net/fastzhong/article/details/107821687
https://www.cnblogs.com/madashu/p/12832766.html
https://blog.csdn.net/qq36846776/article/details/110263376
https://www.cnblogs.com/ysocean/tag/Redis%E8%AF%A6%E8%A7%A3/

1、支持的数据类型有哪些?
①String ②List ③Set ④Hash ⑤Zset

2、为什么要用Redis,一般都有哪些使用场景?
①高性能:查询结果比较慢的,使用Redis比较快
②高并发:多个请求都直接到数据库查询,数据库会挂的

3、Redis 为什么是单线程的?为了快
a,数据都在内存中,单线程操作更快,上下文切换很浪费时间
b,redis作为单进程模型的程序,为了充分利用多核CPU,常常在一台server上会启动多个实例。
而为了减少切换的开销,有必要为每个实例指定其所运行的CPU。Linux 上 taskset 可以将某个进程绑定到一个特定的CPU

4、Redis为什么这么快?
a,redis是纯内存操作,读写比较快
b,非阻塞I/O:Redis采用epoll作为IO多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接,读写,关闭都转换为了时间,不在I/O上浪费过多的时间。
c,单线程避免了线程切换和竞态产生的消耗
d,c语言写的

5、Redis过期删除策略?
参考(一定要看一遍): https://www.cnblogs.com/ysocean/p/12422635.html
①定时删除: 设置过期时间,时间到了就删除(用定时器删除)-----删除及时,但是同时过期比较多占用过多的CPU
②惰性删除: 设置过期时间,时间到了不管,当需要该key时,我们在检查其是否过期,如果过期,我们就删掉它,反之返回该key。
③定期删除: 设置一个循环周期,每次对所以通常情况下Redis的过期删除策略就是:惰性删除和定期删除两种策略配合使用。

6、Redis的内存淘汰机制?
参考: https://blog.csdn.net/wsdc0521/article/details/106997623
https://www.jianshu.com/p/b1b4eeccc140
内存淘汰机制是指:redis中的数据已经超过我们所设置的最大内存了,此时再有新的数据到来,Redis是怎么执行的
如何配置淘汰机制: 通过配置redis.conf中的maxmemory-policy 如 maxmemory-policy noeviction
内存淘汰策略旧版本有6中 新版本有8中
a,noeviction : 不删除 直接报错
b,volatile-ttl: 从配置了过期时间的key中删除即将过期的值
c,volatile-random:从设置了过期时间的key中随机删除一个key
d,allkeys-random:从所有key随机删除
e,volatile-lru : 从设置了过期时间的key中,删除使用最久没用的
f,allkeys-lru: 从所有key中移除最久没用的
g,volatile-lfu:从所有配置了过期时间的键中驱逐使用频率最少的键()
h,allkeys-lfu:从所有键中驱逐使用频率最少的键

参考: https://www.cnblogs.com/hongdada/p/10406902.html
lru算法(最近最久未使用):每次命中的都放在最前面
lfu算法(最近最少使用): 访问频率最低的放最后面

7、什么是缓存穿透?怎么解决?
查询一个一定不存在的数据,所有的请求直达数据库,数据库挂了
解决方案:
a,业务层直接过滤打回
b,不存在的数据,设置空结果在redis中缓存,但设置的过期时间应该比较短
d,布隆过滤器: 布隆过滤器是一种数据结构 https://www.cnblogs.com/ysocean/p/12594982.html

8、什么是缓存击穿?该如何解决?
热点key失效的同时,瞬间大量的请求直达数据库
解决方案:
a,设置热点数据永不过期
b,热点数据定时更新
c,互斥锁,获取数据为空时先上锁,然后从数据库中捞数据,加载完之后再释放锁

9、什么是缓存雪崩?该如何解决?
缓存同一时间大面积失效,或者redis宕机,大量请求直达数据库
解决方案:
a,设置key值过期时间增加一个随机数,让过期时间均匀分布
b,数据预热,对于即将来临的大量数据,提前走一遍系统,将数据缓存在redis中
c,使用哨兵模式,或者集群模式,防止Redis单点故障

10、Redis怎么保证缓存和数据库数据的一致性?
参考: https://blog.csdn.net/en_joker/article/details/103253635

11、Redis 持久化有几种方式?
RDB持久化(快照形式)
AOF持久化(操作日志以追加的方式写入文件)
参考:https://www.cnblogs.com/jxxblogs/p/12243077.html

12、Memcache与Redis的区别都有哪些?
参考: https://blog.csdn.net/l2009103205/article/details/83305825

13、Redis 常见性能问题和解决方案?
参考: https://blog.csdn.net/weixin_44782176/article/details/100934686

14、redis 主从复制如何实现的?
同步分为:增量同步和全量同步
参考: https://www.cnblogs.com/zhuifeng-mayi/p/9301574.html
https://www.cnblogs.com/ysocean/p/9143118.html

15、Redis集群的原理是什么?
参考:https://www.jianshu.com/p/84dbb25cc8dc
集群三种模式(多读读):https://zhuanlan.zhihu.com/p/145186839

16、Redis 怎么实现分布式锁?
参考:https://blog.csdn.net/qq_35190492/article/details/105499233
https://www.jianshu.com/p/c970cc71070b
SETNX+getSET 注意如何解决死锁 如何解决重入

17、Redis 6.0 新特性
https://www.cnblogs.com/madashu/p/12832766.html

28、getbit和setbit
参考: https://www.cnblogs.com/K-artorias/p/8463286.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值