標籤:
隨著redis的發展,越來越多的架構用它取代了memcached作為快取服務器的角色,它有幾個很突出的特點:
1. 除了Hash,還提供了Sorted Set, List等資料結構
2. 可以持久化到磁碟
3. 支援cluster (3.0)
它的效能和memcached不相上下,再加上流行的其他組件(比如隊列)也會用到redis,從架構簡單出發,已經沒有必要混用redis和memcached了。
寫篇短文介紹一下用redis作為快取服務器配置時候需要注意幾個點。
Redis配置
作為快取服務器,如果不加以限制記憶體的話,就很有可能出現將整台伺服器記憶體都耗光的情況,可以在redis的設定檔裡面設定:
?
| 12 |
# 限定最多使用1.5GB記憶體maxmemory 1536mb |
如果記憶體到達了指定的上限,還要往redis裡面添加更多的緩衝內容,需要設定清理內容的策略:
?
| 12 |
# 設定策略為清理最少使用的key對應的資料maxmemory-policy allkeys-lru |
清理策略有多種,redis的官方文檔有一篇很詳細的說明: http://redis.io/topics/lru-cache
Redis監控
redis提供了INFO這個命令,能夠隨時監控伺服器的狀態,只用telnet到對應伺服器的連接埠,執行命令即可:
?
| 12 |
telnet localhost 6379info |
在輸出的資訊裡面有這幾項和緩衝的狀態比較有關係:
?
| 12345 |
keyspace_hits:14414110keyspace_misses:3228654used_memory:433264648expired_keys:1333536evicted_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
Redis 作為快取服務器的配置