Java中的Redis的思维导图_Redis思维导图
常見相關問題
Redis 有哪些功能?數據緩存功能
分布式鎖的功能
支持數據持久化
支持事務
支持消息隊列
Redis 為什么是單線程的?
因為 cpu 不是 Redis 的瓶頸,Redis 的瓶頸最有可能是機器內存或者網絡帶寬。既然單線程容易實現,而且 cpu 又不會成為瓶頸,那就順理成章地采用單線程的方案了。 關于 Redis 的性能,官方網站也有,普通筆記本輕松處理每秒幾十萬的請求。 而且單線程并不代表就慢 nginx 和 nodejs 也都是高性能單線程的代表。
Redis 支持的數據類型有哪些?
Redis 支持的數據類型:string(字符串)、list(列表)、hash(字典)、set(集合)、zset(有序集合)。
Redis 支持的 Java 客戶端都有哪些?
支持的 Java 客戶端有 Redisson、jedis、lettuce 等。
jedis 和 Redisson 有哪些區別?
jedis:提供了比較全面的 Redis 命令的支持。 Redisson:實現了分布式和可擴展的 Java 數據結構,與 jedis 相比 Redisson 的功能相對簡單,不支持排序、事務、管道、分區等 Redis 特性。
怎么保證緩存和數據庫數據的一致性?
合理設置緩存的過期時間。 新增、更改、刪除數據庫操作時同步更新 Redis,可以使用事物機制來保證數據的一致性。
Redis 持久化有幾種方式?
Redis 的持久化有兩種方式,或者說有兩種策略: RDB(Redis Database):指定的時間間隔能對你的數據進行快照存儲。 AOF(Append Only File):每一個收到的寫命令都通過write函數追加到文件中。
緩存穿透、緩存擊穿、緩存雪崩解決方案?緩存穿透:指查詢一個一定不存在的數據,如果從存儲層查不到數據則不寫入緩存,這將導致這個不存在的數據每次請求都要到DB去查詢,可能導致DB掛掉。 解決方案:1.查詢返回的數據為空,仍把這個空結果進行緩存,但過期時間會比較短;
2.布隆過濾器:將所有可能存在的數據哈希到一個足夠大的bitmap中,一個一定不存在的數據會被這個bitmap攔截掉,從而避免了對DB的查詢。
緩存擊穿:對于設置了過期時間的key,緩存在某個時間點過期的時候,恰好這時間點對這個Key有大量的并發請求過來,這些請求發現緩存過期一般都會從后端DB加載數據并回設到緩存,這個時候大并發的請求可能會瞬間把DB壓垮。 解決方案:1.使用互斥鎖:當緩存失效時,不立即去load db,先使用如Redis的setnx去設置一個互斥鎖,當操作成功返回時再進行load db的操作并回設緩存,否則重試get緩存的方法。
2.永遠不過期:物理不過期,但邏輯過期(后臺異步線程去刷新)。
緩存雪崩:設置緩存時采用了相同的過期時間,導致緩存在某一時刻同時失效,請求全部轉發到DB,DB瞬時壓力過重雪崩。與緩存擊穿的區別:雪崩是很多key,擊穿是某一個key緩存。 解決方案:將緩存失效時間分散開,比如可以在原有的失效時間基礎上增加一個隨機值,比如1-5分鐘隨機,這樣每一個緩存的過期時間的重復率就會降低,就很難引發集體失效的事件。
加互斥鎖或者使用隊列,只允許一個線程去查詢數據庫
緩存定時預先更新,避免同時失效
加隨機值,使key在不同時間失效
緩存永不過期
總結
以上是生活随笔為你收集整理的Java中的Redis的思维导图_Redis思维导图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php mysql插入的数据有引号_ph
- 下一篇: java instantiation,I