redis緩存

Redis除了做爲存儲以外還提供了一些其它方面的功能,好比聚合計算、pubsub、scripting等,對於此類功能須要瞭解其實現原理,清楚地瞭解到它的侷限性後,才能正確的使用,好比pubsub功能,這個實際是沒有任何持久化支持的,消費方鏈接閃斷或重連之間過來的消息是會所有丟失的,又好比聚合計算和scripting等功能受Redis單線程模型所限,是不可能達到很高的吞吐量的,須要謹慎使用。redis

1.Redis使用最佳方式是所有數據in-memory。 2.Redis更多場景是做爲Memcached的替代者來使用。 3.當須要除key/value以外的更多數據類型支持時,使用Redis更合適。 4.當存儲的數據不能被剔除時,使用Redis更合適。緩存

在Redis中,並非全部的數據都一直存儲在內存中的。這是和Memcached相比一個最大的區別。Redis只會緩存全部的 key的信息,若是Redis發現內存的使用量超過了某一個閥值,將觸發swap的操做,Redis根據「swappability = age*log(size_in_memory)」計 算出哪些key對應的value須要swap到磁盤。而後再將這些key對應的value持久化到磁盤中,同時在內存中清除。這種特性使得Redis能夠 保持超過其機器自己內存大小的數據。數據結構

memcached和redis的比較:

Memcached是多線程。多線程模型能夠發揮多核做用,可是引入了cache coherency和鎖的問題 Redis使用單線程的IO複用模型。多線程

Memcached使用預分配的內存池的方式。 Redis使用現場申請內存的方式來存儲數據。併發

Memcached提供了cas命令,能夠保證多個併發訪問操做同一份數據的一致性問題。 Redis沒有提供cas 命令,並不能保證這點,不過Redis提供了事務的功能,能夠保證一串 命令的原子性,中間不會被任何操做打斷。app

Memcached基本只支持簡單的key-value存儲,不支持枚舉,不支持持久化和複製等功能 Redis除key/value以外,還支持list,set,sorted set,hash等衆多數據結構,提供了KEYS進行枚舉操做,但不能在線上使用,若是須要枚舉線上數據,Redis提供了工具能夠直接掃描其dump文件,枚舉出全部數據,Redis還同時提供了持久化和複製等功能。memcached

相關文章
相關標籤/搜索