隨着redis的發展,愈來愈多的架構用它取代了memcached做爲緩存服務器的角色,它有幾個很突出的特色:
1. 除了Hash,還提供了Sorted Set, List等數據結構
2. 能夠持久化到磁盤
3. 支持cluster (3.0)html
它的性能和memcached不相上下,再加上流行的其餘組件(好比隊列)也會用到redis,從架構簡單出發,已經沒有必要混用redis和memcached了。git
寫篇短文介紹一下用redis做爲緩存服務器配置時候須要注意幾個點。github
做爲緩存服務器,若是不加以限制內存的話,就頗有可能出現將整臺服務器內存都耗光的狀況,能夠在redis的配置文件裏面設置:redis
1
2
|
# 限定最多使用1.5GB內存
maxmemory 1536mb
|
若是內存到達了指定的上限,還要往redis裏面添加更多的緩存內容,須要設置清理內容的策略:shell
1
2
|
# 設置策略爲清理最少使用的key對應的數據
maxmemory-policy allkeys-lru
|
清理策略有多種,redis的官方文檔有一篇很詳細的說明: http://redis.io/topics/lru-cache緩存
redis提供了INFO這個命令,可以隨時監控服務器的狀態,只用telnet到對應服務器的端口,執行命令便可:ruby
1
2
|
telnet localhost 6379
info
|
在輸出的信息裏面有這幾項和緩存的狀態比較有關係:服務器
1
2
3
4
5
|
keyspace_hits:14414110
keyspace_misses:3228654
used_memory:433264648
expired_keys:1333536
evicted_keys:1547380
|
經過計算hits和miss,咱們能夠獲得緩存的命中率:14414110 / (14414110 + 3228654) = 81% ,一個緩存失效機制,和過時時間設計良好的系統,命中率能夠作到95%以上,對於總體性能提高是很大的。
used_memory,expired_keys,evicted_keys這3個信息的具體含義,redis的官方也有一篇很詳細的說明:http://redis.io/commands/info數據結構
有個ruby gem叫redis-stat,它利用INFO命令展示出更直觀的信息報表,推薦:
https://github.com/junegunn/redis-stat架構