關於Memcache與Redis

本文嘗試總結Memcache與Redis之間的相同點及不一樣點,以及關於二者的一些注意問題。html

相同


  • 同爲內存型數據庫
  • 當數據寫滿後均以LRU機制替換數據
  • 分佈式支持

不一樣


Memcache

  • 多線程
  • 最大key爲512B,最大value爲1M

Redis

  • 單線程
Redis是單線程因此總體性能不如Memcache,可是平均到每一個核上Redis在存儲小數據時比Memcached性能更高。因爲單線程多I/O串行限制,Redis在存儲更大的數據(大於100k)時性能遜於Memcache。
  • 最大key爲512M,最大value爲512M
  • 持久化
  • 更豐富的數據類型
  1. Hashes
  2. Sorted Sets
  3. Lists
  4. Sets
  • Lua腳本支持
可在Redis中執行Lua腳本,例如用Lua實現原子鎖。  
  • 關於Redis的delete
Redis的delete操做會有毫秒級的延遲,由於Redis的數據回收機制並不是實時觸發而是定時檢查所需回收的數據是否達到某個筏值,達到纔會觸發數據回收。
  • 關於Redis執行順序
根據 這裏( http://www.redis.cn/topics/clients.html )文檔翻譯:「該順序是由客戶端 socket 文件描述符的數字大小及核心報告客戶端事件的順序決定的,所以順序能夠當作不肯定的。」,順序在大致上會呈「先到先做的原則」,但小處上呈現的應該是無序性。
  • 關於Redis最大鏈接
若是考慮「 TCP 的 TIME WAIT 」問題,在 MBP 上測試的結果是 17000 左右的請求數就會出現「 Can't assign requested address 」的錯誤。但這個實際上是受限於操做系統最大文件描述符,在程序上可以使用長連接或單例模式優化。在系統上可經過修改最大文件描述符或減小TCP TIMEWAIT的回收時間。

[暫時想到這些,想到繼續補充]redis

源地址 By佐柱數據庫

轉載請註明出處,也歡迎偶爾逛逛個人小站,謝謝 :)多線程

相關文章
相關標籤/搜索