1. 程式人生 > >redis面試題集錦

redis面試題集錦

logs 避免 復雜 csdn 面試題 解決方案 itl 定性 繼續

1為什麽Redis需要把所有數據放到內存中?

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

2 redis兩種持久化策略

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

3 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(驅逐):禁止驅逐數據

redis面試題集錦