<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
    1、線程問題
        由于Redis只使用單核,而Memcached可以使用多核,所以平均每一個核上Redis在存儲小數據時比Memcached性能更高。而在100k以上的數據中,Memcached性能要高于Redis,雖然Redis最近也在存儲大數據的性能上進行優化,但是比起 Memcached,還是稍有遜色。

    因為 Redis 的操作都非??焖?#8212;—它的數據全部在內存里,完全不需要訪問磁盤。至于并發,Redis 使用多路 I/O 復用技術,本身的并發效率不成問題。

    當然,單個 Redis 進程沒辦法使用多核(任一時刻只能跑在一個 CPU 核心上),但是它本來就不是非常計算密集型的服務。如果單核性能不夠用,可以多開幾個進程。

    Redis 單線程-多路復用io模型

    、
    2、內存使用效率對比:
        使用簡單的key-value存儲的話,Memcached的內存利用率更高,而如果Redis采用hash結構來做key-value存儲,由于其組合式的壓縮,其內存利用率會高于Memcached。
    3、數據類型:
        Redis相比Memcached來說,擁有更多的數據結構和并支持更豐富的數據操作,通常在Memcached 里,你需要將數據拿到客戶端來進行類似的修改再set回去。這大大增加了網絡IO的次數和數據體積。在Redis中,這些復雜的操作通常和一般的 GET/SET一樣高效。所以,如果需要緩存能夠支持更復雜的結構和操作,那么Redis會是不錯的選擇。
    4、安全機制
        memcached采用cas機制,而redis有事務機制。
    5、事件模型
        memcached采用了libevent事件模型,多線程模型可以發揮多核作用,Redis實現了自己的一套和libevent類似的事件驅動機制,兩者都采用了epoll通信模型和非阻塞機制。

        epoll是在2.6內核中提出的,是之前的select和poll的增強版本。相對于select和poll來說,epoll更加靈活,沒有描述符限制。epoll使用一個文件描述符管理多個描述符,將用戶關系的文件描述符的事件存放到內核的一個事件表中,這樣在用戶空間和內核空間的copy只需一次。

     最后講講 為什么epoll會比select高效,主要從三方面來進行論述。
            (1)elect對描述符狀態的改變是通過輪詢來進行查找的;而epoll是當描述符狀態發生改變時主動進行通知內核,這就是所謂的Reactor事件處理機制。可以用“好萊塢原則”進行描述:不要打電話給我們,我們會打電話通知你。相比之下,select的機制就好比面試結束后不停給面試官打電話詢問面試結果。效率孰高孰低,可見一 斑。
            
           (2)select的文件描述符是使用鏈表進行組織的;而epoll是使用紅黑樹這一高效數據結構組織的。
            
           (3)select從內核到用戶空間傳遞文件描述符上發送的信息是使用內存復制的方式進行的;而epoll是采用共享內存的方式。  
    6、內存管理方面
      Memcached使用預分配的內存池的方式,使用slab和大小不同的chunk來管理內存,Item根據大小選擇合適的chunk存儲,內存池的方式可以省去申請/釋放內存的開銷,并且能減小內存碎片產生,但這種方式也會帶來一定程度上的空間浪費,并且在內存仍然有很大空間時,新的數據也可能會被剔除,原因可以參考Timyang的文章:http://timyang.net/data/Memcached-lru-evictions/
      Redis使用現場申請內存的方式來存儲數據,并且很少使用free-list等方式來優化內存分配,會在一定程度上存在內存碎片,Redis跟據存儲命令參數,會把帶過期時間的數據單獨存放在一起,并把它們稱為臨時數據,非臨時數據是永遠不會被剔除的,即便物理內存不夠,導致swap也不會剔除任何非臨時數據(但會嘗試剔除部分臨時數據),這點上Redis更適合作為存儲而不是cache。
    7、redis并發

    Redis 是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類keyvalue存儲的不足,在部 分場合可以對關系數據庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便。

    性能測試結果:

    SET操作每秒鐘 110000 次,GET操作每秒鐘 81000 次,服務器配置如下:

    Linux 2.6, Xeon X3320 2.5Ghz.

    stackoverflow 網站使用 Redis 做為緩存服務器。





    posted on 2015-04-05 05:45 abin 閱讀(576) 評論(0)  編輯  收藏 所屬分類: Redis
    主站蜘蛛池模板: 99久久久国产精品免费蜜臀| 无码国产精品一区二区免费I6| 亚洲成人在线网站| jjizz全部免费看片| 国产AV无码专区亚洲AV蜜芽| a级毛片毛片免费观看永久| 亚洲一区无码精品色| xxxx日本在线播放免费不卡| 国产a v无码专区亚洲av| 精品国产免费一区二区三区| 亚洲中文字幕久久精品无码喷水| 91免费人成网站在线观看18| 亚洲娇小性色xxxx| 亚洲精品无码久久一线| 毛片免费视频观看| 日韩免费观看一区| 黄色一级毛片免费| 亚洲成AV人综合在线观看| 亚洲国产精品一区二区第一页免| 18女人毛片水真多免费| 国产福利免费视频 | 亚洲欧洲精品成人久久奇米网| 亚洲国产精品免费视频| 精品在线免费视频| 亚洲第一网站免费视频| 亚洲精品美女久久777777| 国产精品视频免费一区二区三区| 亚洲美女免费视频| 最近更新免费中文字幕大全| 亚洲AV电影天堂男人的天堂| 亚洲第一网站免费视频| 亚洲国产成人久久综合一| 亚洲麻豆精品国偷自产在线91| 一个人免费高清在线观看| 美女在线视频观看影院免费天天看| 真正全免费视频a毛片| 亚洲变态另类一区二区三区| 亚洲一区二区久久| 亚洲精品视频在线播放| 亚洲av综合av一区| 亚洲无av在线中文字幕|