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節點或者這個鎖就可以加可以釋放)
可以看這裏詳細瞭解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章