前言:緩存的作用
在Nosql中Memcached與Redis,基本作用都是利用緩存來緩解數據庫壓力,通過減少對數據庫的讀取,來提升應用性能。
常用的邏輯也是
1.檢查熱點數據是緩存中是否有存在,如果緩存存在,只需要返回緩存中的數據即可,無需讀取數據庫。
2.如果熱點數據在緩存中找不到,此時去查詢數據庫。返回數據的同時,把熱點數據存儲到緩存中。
3.每當數據發生變化的時候(通常是修改以及刪除),要同步的更新緩存信息,確保用戶不會在緩存出現髒數據。
正文
Memcached與Redis區別:
1、首先Memcached是多核的,而Redis是單核的。
所以平均每一個核上Redis在存儲小數據時比 Memcached性能更高。但是當數據在100k以上,Memcached性能要高於Redis。
2、key value的大小:
Memcached單個key-value大小有限,一個value最大隻支持1MB,而Redis最大支持512MB 。
3、Memcached是內存緩存,沒有持久性,斷電重啓會丟失數據。而redis有持久性,斷電重啓不會大部分丟失數據,注意是大部分,不會丟失全部,具體請看redis持久性文檔。
4、MemCached數據結構單一,僅用來緩存數據,而Redis支持更加豐富的數據類型(string,list,hash,set,zset),也可以在服務器端直接對數據進行豐富的操作,這樣可以減少網絡IO次數和數據體積。
應用場景:
Memcached 非常適合處理高流量的網站。它可以一次性讀取大量的信息,並在優秀的反應時間內返回。Redis不但能處理高流量的讀,還能處理繁重的寫入。
Redis與Memcached相比,性能和內存使用情況相當相似。常見場景有1、緩存;2、排行榜;3、計數器;4、分佈式會話;5、分佈式鎖;6、 社交網絡;7、最新列表;8、消息系統。