国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【NoSQL】memcached介紹

icattlecoder / 1323人閱讀

摘要:簡介是高性能的分布式內存緩存服務器。一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態(tài)應用的速度提高可擴展性。當表格滿了以后,接下來新增的資料會以機制替換掉。目前有模式和模式。

memcached簡介

memcached是高性能的分布式內存緩存服務器。一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態(tài)Web應用的速度、提高可擴展性。

memcached的API使用32位元的循環(huán)冗余校驗(CRC-32)計算鍵值后,將資料分散在不同的機器上。當表格滿了以后,接下來新增的資料會以LRU機制替換掉。由于memcached通常只是當作快取系統(tǒng)使用,所以使用memcached的應用程式在寫回較慢的系統(tǒng)時(像是后端的數據庫)需要額外的程式碼更新memcached內的資料

Memcached基于一個存儲鍵/值對的hashmap。其守護進程(daemon
)是用C寫的,但是客戶端可以用任何語言來編寫,并通過memcached協(xié)議與守護進程通信

memcached的安裝,配置等基本參數,基本用法(PHP)

http://nl1.php.net/manual/zh/...

memcached分布式hash策略

Memcache安裝完成之后,可以設置哈希策略,memcache.hash_strategy。目前有standard模式和consistent模式。standard模式其實就是%,即取模。而consistent,就是hash的一致性算法。

在Memcache中,hash策略在php.ini文件中設置

[Memcache] 
Memcache.allow_failover = 1 
Memcache.hash_strategy =consistent 
Memcache.hash_function =crc32

余數分布算法

假如有2臺服務器node0,node1和node2,當hashcode=5時,5%3=2,就路由到第3臺機器。但是如果其中node2服務down之后,那么所有路由到node2的數據都會丟失

后期如果業(yè)務增長后,需要增加node4,那么之前的所有數據又要失效了,所以不方便擴展

一致性分布算法(基于libketama)

簡單說來,一致性hash算法就是先把服務器也通過某一個特征(如IP/MAC地址)hash一下,這樣服務器會按照分布(可能不均勻)在一個范圍,然后把key再hash一下,然后看key最近的下個服務器作為該key的存儲bin。
這樣,如果增加一臺服務器,重新分配的key只是分布再新增的這個服務器和上一個最近的服務器之間的key,其余的都不變。
http://blog.csdn.net/kongqz/a...

memcached的存儲數據結構

Hash表是Memcached里面最重要的結構之一,其采用鏈接法來處理Hash沖突(和php解決hash沖突一樣,鏈地址法),當Hash表中的項太多時,也就是Hash沖突比較高的時候,Hash表的遍歷就脫變成單鏈表,此時為了提供Hash的性能,Hash表需要擴容,Memcached的擴容條件是當表中元素個數超過Hash容量的1.5倍時就進行擴容,擴容過程由獨立的線程來完成,擴容過程中會采用2個Hash表,將老表中的數據通過Hash算法映射到新表中,每次移動的桶的數目可以配置,默認是每次移動老表中的1個桶。
http://blog.csdn.net/liziyun5...

memcache內存分配

把數據組裝成 item 之前, 必須為 item 分配存儲空間, memcached 不是直接從操作系統(tǒng)分配內存的,
memcached內部使用了類似內存池的東西, 即slab機制, 來管理內存. 內存的分配和回收都交給 slab 子系統(tǒng)實現(xiàn)。

memcached 中, 內存的分配和回收, 都是通過 slab 實現(xiàn)的, slab機制相當于內存池機制,
實現(xiàn)從操作系統(tǒng)分配一大塊內存, 然后 memcached 自己管理這塊內存, 負責分配與回收

像一般的內存池一樣, 從操作系統(tǒng)分配到一大塊內存后, 為了方便管理, 把這大塊內存劃分為各種大小的 chunk,
chunk的大小按照一定比例逐漸遞增, 如下圖所示:

從 slab 分配內存的時候, 根據請求內存塊的大小, 找到大小最合適的 chunk 所在的 slabclass, 然后從這個slabclass 找空閑的 chunk 分配出去. 所謂最合適就是指 chunk 的大小能夠滿足要求, 而且碎片最小。如下圖:

這種分配方式的缺點是存在內存碎片, 例如, 將 100字節(jié)的 item 存儲到一個 128 字節(jié)的 chunk, 就有 28 字節(jié)的內存浪費, 如下圖所示:

slabclass 是由 chunk size 確定的, 同一個 slabclass 內的 chunk 大小都一樣, 每一個
slabclass 要負責管理 一些內存, 初始時, 系統(tǒng)為每個 slabclass 分配一個 slab, 一個 slab
就是一個內存塊, 其大小等于 1M. 然后每個 slabclass 再把 slab 切分成一個個 chunk, 算一下, 一個
slab 可以切分得到 1M/chunk_size 個chunk

一個slabclass分配一個slab
一個slab分成多個chunk(同一個slab中chunk相等)
一個chunk就是一個item(這個item不一定全部利用)

圖片來自

memcache其他延伸

Magent代理
http://blog.csdn.net/qwe61120...

參考資料:
http://www.cnblogs.com/xrq730...
memcache源碼分析
http://blog.csdn.net/column/d...
http://blog.csdn.net/lcli2009...
http://www.jianshu.com/p/fcf9...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/61717.html

相關文章

  • 講講NoSQL比較火的三個數據庫Memcached、Redis、MongoDB

    摘要:而今天主要講用得比較多的三個。支持持久化操作,可以進行及數據持久化到磁盤,從而進行數據備份或數據恢復等操作,較好的防止數據丟失的手段。單線程請求,所有命令串行執(zhí)行,并發(fā)情況下不需要考慮數據一致性問題。 前言 NoSQL,泛指非關系型的數據庫。隨著互聯(lián)網不斷的發(fā)展,傳統(tǒng)的關系數據庫在應付新互聯(lián)網模式的網站,特別是超大規(guī)模和高并發(fā)的SNS類型的純動態(tài)網站已經顯得力不從心,暴露了很多難以克服...

    Michael_Lin 評論0 收藏0
  • 講講NoSQL比較火的三個數據庫Memcached、Redis、MongoDB

    摘要:而今天主要講用得比較多的三個。支持持久化操作,可以進行及數據持久化到磁盤,從而進行數據備份或數據恢復等操作,較好的防止數據丟失的手段。單線程請求,所有命令串行執(zhí)行,并發(fā)情況下不需要考慮數據一致性問題。 前言 NoSQL,泛指非關系型的數據庫。隨著互聯(lián)網不斷的發(fā)展,傳統(tǒng)的關系數據庫在應付新互聯(lián)網模式的網站,特別是超大規(guī)模和高并發(fā)的SNS類型的純動態(tài)網站已經顯得力不從心,暴露了很多難以克服...

    Lionad-Morotar 評論0 收藏0
  • 講講NoSQL比較火的三個數據庫Memcached、Redis、MongoDB

    摘要:而今天主要講用得比較多的三個。支持持久化操作,可以進行及數據持久化到磁盤,從而進行數據備份或數據恢復等操作,較好的防止數據丟失的手段。單線程請求,所有命令串行執(zhí)行,并發(fā)情況下不需要考慮數據一致性問題。 前言 NoSQL,泛指非關系型的數據庫。隨著互聯(lián)網不斷的發(fā)展,傳統(tǒng)的關系數據庫在應付新互聯(lián)網模式的網站,特別是超大規(guī)模和高并發(fā)的SNS類型的純動態(tài)網站已經顯得力不從心,暴露了很多難以克服...

    szysky 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<