redis常见问题及解答,看这一篇就可以满足你!

首先说明,该编为精简版,将问题及解答浓缩起来,抛砖引玉。解答内容太多的就借用了别人的博客详细解释,谢谢。

1、为啥要使用缓存啊?用了缓存的有什么常见问题?

用缓存,主要是俩用途,高性能和高并发
常见问题:(此解答在文章的8、9、10有解释,请往下看)
a)缓存与数据库双写不一致
b)缓存雪崩
c)缓存穿透
d)缓存并发竞争

2、聊聊redis的线程模型吧?为啥单线程还能有很高的效率?
redis线程模型

a、纯内存操作;
b、核心是基于非阻塞的IO多路复用机制;
c、单线程反而避免了多线程的频繁上下文切换问题(百度)

为什么Redis单线程还能支撑高并发?

3、redis都有哪些数据类型?分别在哪些场景下使用比较合适?

a、string->这是最基本的类型了,就是普通的set和get,做简单的kv缓存

b、hash->hash类的数据结构,主要是用来存放一些对象,把一些简单的对象给缓存起来,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值

c、list->有序列表

d、set->无序集合,自动去重

e、sorted set->排序的set,去重但是可以排序

4、redis的过期策略能介绍一下?
定期删除+惰性删除、内存淘汰机制

5、怎么保证redis是高并发以及高可用的?
在这里插入图片描述
更详细的介绍看这里

6、怎么保证redis挂掉之后再重启数据可以进行恢复?
redis的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的?

7、能聊聊redis cluster集群模式的原理吗?

https://blog.csdn.net/qq_41864967/article/details/90637268

8、如何应对缓存雪崩以及穿透问题?

事前:redis高可用,主从+哨兵,redis cluster,避免全盘崩溃
事中:本地ehcache缓存 + hystrix限流&降级,避免MySQL被打死
事后:redis持久化,快速恢复缓存数据

概念、举例看这里

9、如何保证缓存与数据库双写时的数据一致性?

如果仅仅查询的话,缓存的数据和数据库的数据是没问题的。但是,当我们要更新时候呢?各种情况很可能就造成数据库和缓存的数据不一致了。

这里不一致指的是:数据库的数据跟缓存的数据不一致
那么解决方案点这里

10、redis的并发竞争问题该如何解决?

redis事务的CAS类的乐观锁方案
https://blog.csdn.net/weixin_33853827/article/details/91433119
https://www.cnblogs.com/guoyu1/p/12266139.html

11、你们公司生产环境的redis集群的部署架构是什么样的?

这个就根据自己情况来说吧,或者自行百度查一下别人怎么说的

12、redis分布式锁?

官方叫做RedLock算法,是redis官方支持的分布式锁算法。

这个分布式锁有3个重要的考量点,互斥(只能有一个客户端获取锁),不能死锁,容错(大部分redis节点或者这个锁就可以加可以释放)
可以看这里详细了解

发布了5 篇原创文章 · 获赞 1 · 访问量 209

猜你喜欢

转载自blog.csdn.net/weixin_44842613/article/details/105784133