1. 程式人生 > 其它 >redis的幾個問題

redis的幾個問題

1.redis 是什麼?都有哪些使用場景

Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。

Redis 使用場景:

  • 資料高併發的讀寫
  • 海量資料的讀寫
  • 對擴充套件性要求高的資料

2.redis 有哪些功能?

  • 資料快取功能
  • 分散式鎖的功能
  • 支援資料持久化
  • 支援事務
  • 支援訊息佇列

3.redis 和 memecache 有什麼區別

  • memcached所有的值均是簡單的字串,redis作為其替代者,支援更為豐富的資料型別
  • redis的速度比memcached快很多
  • redis可以持久化其資料

4.redis 為什麼是單執行緒的

因為 cpu 不是 Redis 的瓶頸,Redis 的瓶頸最有可能是機器記憶體或者網路頻寬。既然單執行緒容易實現,而且 cpu 又不會成為瓶頸,那就順理成章地採用單執行緒的方案了。關於 Redis 的效能,官方網站也有,普通筆記本輕鬆處理每秒幾十萬的請求。而且單執行緒並不代表就慢 nginx 和 nodejs 也都是高效能單執行緒的代表。

5.什麼是快取穿透?怎麼解決

快取穿透:指查詢一個一定不存在的資料,由於快取是不命中時需要從資料庫查詢,查不到資料則不寫入快取,這將導致這個不存在的資料每次請求都要到資料庫去查詢,造成快取穿透。

解決方案:最簡單粗暴的方法如果一個查詢返回的資料為空(不管是資料不存在,還是系統故障),我們就把這個空結果進行快取,但它的過期時間會很短,最長不超過五分鐘。

6.redis 支援的資料型別有哪些

string、list、hash、set、zset。

7.redis 支援的 java 客戶端都有哪些

Redisson、Jedis、lettuce等等,官方推薦使用Redisson。

8.jedis 和 redisson 有哪些區別

Jedis是Redis的Java實現的客戶端,其API提供了比較全面的Redis命令的支援。

Redisson實現了分散式和可擴充套件的Java資料結構,和Jedis相比,功能較為簡單,不支援字串操作,不支援排序、事務、管道、分割槽等Redis特性。Redisson的宗旨是促進使用者對Redis的關注分離,從而讓使用者能夠將精力更集中地放在處理業務邏輯上。

9.怎麼保證快取和資料庫資料的一致性

  • 合理設定快取的過期時間。
  • 新增、更改、刪除資料庫操作時同步更新 Redis,可以使用事物機制來保證資料的一致性。

10.redis 持久化有幾種方式

Redis 的持久化有兩種方式,或者說有兩種策略:

  • RDB(Redis Database):指定的時間間隔能對你的資料進行快照儲存。
  • AOF(Append Only File):每一個收到的寫命令都通過write函式追加到檔案中。

11.redis 怎麼實現分散式鎖

Redis 分散式鎖其實就是在系統裡面佔一個“坑”,其他程式也要佔“坑”的時候,佔用成功了就可以繼續執行,失敗了就只能放棄或稍後重試。佔坑一般使用 setnx(set if not exists)指令,只允許被一個程式佔有,使用完呼叫 del 釋放鎖。

12.redis 分散式鎖有什麼缺陷

Redis 分散式鎖不能解決超時的問題,分散式鎖有一個超時時間,程式的執行如果超出了鎖的超時時間就會出現問題。

13.redis 如何做記憶體優化

儘可能使用散列表(hashes),散列表(是說散列表裡面儲存的數少)使用的記憶體非常小,所以你應該儘可能的將你的資料模型抽象到一個散列表裡面。

比如你的web系統中有一個使用者物件,不要為這個使用者的名稱,姓氏,郵箱,密碼設定單獨的key,而是應該把這個使用者的所有資訊儲存到一張散列表裡面。

14 redis 淘汰策略有哪些

  • volatile-lru:從已設定過期時間的資料集(server. db[i]. expires)中挑選最近最少使用的資料淘汰。
  • volatile-ttl:從已設定過期時間的資料集(server. db[i]. expires)中挑選將要過期的資料淘汰。
  • volatile-random:從已設定過期時間的資料集(server. db[i]. expires)中任意選擇資料淘汰。
  • allkeys-lru:從資料集(server. db[i]. dict)中挑選最近最少使用的資料淘汰。
  • allkeys-random:從資料集(server. db[i]. dict)中任意選擇資料淘汰。
  • no-enviction(驅逐):禁止驅逐資料。

15 redis 常見的效能問題有哪些?該如何解決

  • 主伺服器寫記憶體快照,會阻塞主執行緒的工作,當快照比較大時對效能影響是非常大的,會間斷性暫停服務,所以主伺服器最好不要寫記憶體快照。
  • Redis 主從複製的效能問題,為了主從複製的速度和連線的穩定性,主從庫最好在同一個區域網內。