搜尋

首頁  >  問答  >  主體

什么样的场景下需要同时使用Redis和Memcached?

如题,见过一些工程同时使用Redis和Memcached,感觉这样很麻烦。
如果不是早期使用Memcached且难以移植到Redis,还有没有其他可能性?

天蓬老师天蓬老师2763 天前680

全部回覆(4)我來回復

  • 高洛峰

    高洛峰2017-04-22 09:01:06

    前廠是這麼用的:

    • 實體資料如使用者的資訊以protobuf編碼存入memcached,一週失效期,作為MySQL的二級快取
    • 列表資料例如使用者的訂閱列表放redis,對應資料MySQL也做備份,但redis讀不到不會再去MySQL讀

    總結:

    • redis的資料結構較為豐富,適合存集合、列表或有序表
    • redis在當時還沒有比較完善的分散式方案,所以盡量不存大的實體資料(當然隨著用戶量的暴增,我們後來用哈希key的方式實現了偽分散式)
    • memcached比較簡單,速度也比redis快,適合存實體數據,但當時遇到的問題是json的包裝和解析會成為瓶頸,所以後來我們全部換成了json的包装和解析会成为瓶颈,所以后来我们全部换成了protobuf

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-22 09:01:06

    需要除key/value之外的更多資料類型支援時或儲存的資料不能被剔除時,使用Redis更合適。而如果只是簡單的快取數據,顯然使用memcached更加合適。或者說,相較來說,redis更適合存儲,而memcache更適合快取。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-22 09:01:06

    需要频繁查询变化频率不是太高的都是這兩位的用點所在

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-22 09:01:06

    stackoverflow上面有人問過這個問題《Is memcached a dinosaur in comparison to Redis?》,redis的作者給了解答(http://stackoverflow.com/questions/2873249/is-memcached-a-dinosaur-in- comparison-to-redis)。整體上說,兩者的性能都很好,不必為哪個性能更高而糾結。不過,redis提供的持久化和資料同步機制,這些都是memcached沒有的,所以如果你想要持久化,就只能用redis了。另外,memcached足以應付簡單的鍵值存儲,不過你要是想用更高級的數據結構,比如hash,list,set,zset之類的,redis提供了這些類型,用著更方便。

    回覆
    0
  • 取消回覆