<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 的操作都非常快速——它的數據全部在內存里,完全不需要訪問磁盤。至于并發,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 閱讀(571) 評論(0)  編輯  收藏 所屬分類: Redis
    主站蜘蛛池模板: 免费国产a国产片高清| 18禁无遮挡无码网站免费| 久久青草免费91线频观看不卡| 在线毛片片免费观看| 99久热只有精品视频免费看| 久久久久久免费视频| 免费国内精品久久久久影院| 国产午夜亚洲精品午夜鲁丝片| 久热综合在线亚洲精品| 亚洲人和日本人jizz| 亚洲精品色在线网站| 国产在线观看无码免费视频| 麻豆国产精品免费视频| 日韩免费观看视频| 亚洲精品少妇30p| 亚洲一区精品视频在线| 日本中文字幕免费看| 一级毛片不卡片免费观看| 暖暖免费高清日本中文| 国产AV无码专区亚洲AV漫画| 亚洲国产福利精品一区二区| 免费人成动漫在线播放r18| 三年片在线观看免费大全电影| 免费看的黄色大片| 国产亚洲综合网曝门系列| 亚洲视频一区二区三区四区| 久香草视频在线观看免费| 114级毛片免费观看| 免费人妻av无码专区| 亚洲最大成人网色| 老司机午夜在线视频免费| 91精品国产免费| 亚洲av高清在线观看一区二区 | 亚洲国产日产无码精品| 黄色网址免费在线| 69视频在线观看免费| 亚洲精品无码久久久| 亚洲娇小性色xxxx| 免费一级不卡毛片| 国产一区二区三区在线免费| 日本久久久久亚洲中字幕|