redis面試題集錦 Redis為什麼使用單程序單執行緒方式也這麼快
1為什麼Redis需要把所有資料放到記憶體中?
Redis為了達到最快的讀寫速度將資料都讀到記憶體中,並通過非同步的方式將資料寫入磁碟。所以Redis具有快速和資料持久化的特性。如果不將資料放到記憶體中,磁碟的I/O速度會嚴重影響redis的效能。在記憶體越來越便宜的今天,redis將會越來越受歡迎。如果設定了最大使用的記憶體,則資料已有記錄數達到記憶體限值後將不能繼續插入新值。
2 redis兩種持久化策略
https://blog.csdn.net/u010785685/article/details/52366977
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(驅逐):禁止驅逐資料
-