1. 程式人生 > >redis面試題集錦 Redis為什麼使用單程序單執行緒方式也這麼快

redis面試題集錦 Redis為什麼使用單程序單執行緒方式也這麼快

1為什麼Redis需要把所有資料放到記憶體中?

Redis為了達到最快的讀寫速度將資料都讀到記憶體中,並通過非同步的方式將資料寫入磁碟。所以Redis具有快速和資料持久化的特性。如果不將資料放到記憶體中,磁碟的I/O速度會嚴重影響redis的效能。在記憶體越來越便宜的今天,redis將會越來越受歡迎。如果設定了最大使用的記憶體,則資料已有記錄數達到記憶體限值後將不能繼續插入新值。

2 redis兩種持久化策略

https://blog.csdn.net/u010785685/article/details/52366977

Redis為什麼使用單程序單執行緒方式也這麼快

http://www.cnblogs.com/syyong/p/6231326.html

4 Redis記憶體模型

https://blog.csdn.net/qq_26624661/article/details/79269740

5  使用Redis有哪些好處?

(1) 速度快,因為資料存在記憶體中,類似於HashMap,HashMap的優勢就是查詢和操作的時間複雜度都是O(1)

(2) 支援豐富資料型別,支援string,list,set,sorted set,hash

(3) 支援事務,操作都是原子性,所謂的原子性就是對資料的更改要麼全部執行,要麼全部不執行

(4) 豐富的特性:可用於快取,訊息,按key設定過期時間,過期後將會自動刪除

 

6 redis相比memcached有哪些優勢?

(1) memcached所有的值均是簡單的字串,redis作為其替代者,支援更為豐富的資料型別

(2) redis的速度比memcached快很多

(3) redis可以持久化其資料

 

7  redis常見效能問題和解決方案:

(1) Master最好不要做任何持久化工作,如RDB記憶體快照和AOF日誌檔案

(2) 如果資料比較重要,某個Slave開啟AOF備份資料,策略設定為每秒同步一次

(3) 為了主從複製的速度和連線的穩定性,Master和Slave最好在同一個區域網內

(4) 儘量避免在壓力很大的主庫上增加從庫

(5) 主從複製不要用圖狀結構,用單向連結串列結構更為穩定,即:Master <- Slave1 <- Slave2 <- Slave3...

這樣的結構方便解決單點故障問題,實現Slave對Master的替換。如果Master掛了,可以立刻啟用Slave1做Master,其他不變。

 

 8 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(驅逐):禁止驅逐資料