redis介紹


redis (remote dictionary server)

redis特點:

1)支持內存緩存,相當於memcached;

2)持久化,相當於memcachedb,ttserver;

3)數據類型更豐富;

4)支持集羣,分佈式;

5)key-value鍵值類型存儲系統;

6)支持數據可靠存儲及落地;

7)單進程單線程高性能服務器;(可實現多實例)

一個實例20-30G內存;

8)crash safe & recovery slow;

9)單機qps 可以達到10w

10)適合小數據量高速讀寫訪問;

11)支持異機主從複製;

12)支持publish/subscribe(發佈/訂閱),通知,key過期等等特性;


  redis支持存儲的value類型相對更多,包括string(字符串)、list(列表)、set(集合)、和zset(有序集合)和hash等;    與memcachedb一樣,爲了保證效率,數據都是緩存在內存中,區別是redis會會週期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步


這些數據類型支持push/pop、add/remove及取交集、並集和差集及更豐富的操作,而且這些操作都是原子性的,不會出現鎖的情況;


缺點:

1)代碼從讀取memcached更改爲讀取redis;

2)不同命令延遲差別極大;

3)內存管理開銷大(低於物理內存的3/5)

4)buffer io 造成系統oom(內存溢出)



redis持久化

1)snapshot(快照)一次性將內存中的數據寫入到磁盤,需要key的更新(輸入觸發類型);

2)aof(binlog日誌方式),記錄每次更新的日誌,不會導致數據的丟失;(不用於主從同步)僅僅用於保存數據;




redis最佳應用場景

1.redis全部數據在memory

2.最佳對memcached的替代品;

3.數據比較重要,對數據一致性有一定要求的業務;

4.當需要除key/value之外的更多數據類型支持時,使用redis更合適;

5.需要提供主從同步以及負載均衡分佈式應用場景(redis主從同步);



redis的生產經驗教訓

1.要進行master-slave主從同步配置,在出現服務故障時可以切換;

2.在master禁用數據持久化,只需在slave上配置數據持久化;

3.物理內存+虛擬內存不足,這個時候dump一直死着,時間久了機器掛掉

4.當redis物理內存使用超過內存總容量的3/5時就會開始比較危險了,就開始做swap,內存碎片大!

5.當達到最大內存時,會清空帶有過期時間的key,即使key未到過期時間;

6.redis與db同步寫的問題,先寫db,後寫redis,因爲寫內存基本上沒有問題;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章