国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

memcached隨筆記

2024-07-21 02:04:14
字體:
來源:轉載
供稿:網友

memcached大名鼎鼎,數據庫有壓力時都會請此君來緩解緩解。因常遇到些問題,讀些文章,隨筆做些記錄。整理后,有此文。

memcached是什么?
web應用數據保存在RDBMS中(絕大多數是mysql).從數據庫讀取數據,隨著訪問量增大,出現數據庫負擔很重,反應很慢的問題。memcached就是解決此問題而生。他將數據緩存到內存中,提高讀寫數據的能力。

memcached有何特點?
兩點:第一,分布式;第二, 緩存。

如何理解分布式

memcached是分布式內存緩存服務器,但服務器端是不互相通信的。簡而言之,他的分布式取決于客戶端的實現。那么,如何解決如下問題,有三臺memcached服務器,如何將key=>value類型的數據存放到memcached中?

方法有兩種: 余數計算法和圓點計數法(官方名稱,一致性算法).
先看余數計算法.先將memcached服務器標號1,2,3.計算key的hash值。然后初以服務器數量3,得到的余數(如2),則將數據放到2上。
此法優點方法簡單,易于分散數據。但問題是,如果增加了一臺memcached服務器,key的hash值除以的余數就變了,勢必要重組整個緩存數據,代價不小。所以,看下圓點解決之道。
圓點法是基于Consistent Hashing的思想。簡單的說,先得出memcached服務器的哈希值,配置到一個0-2的32次方的圓上。然后同樣計算出key的哈希值,映射到相同的圓上。從映射的位置開始順時針查找,將數據保存到找到的第一個服務器上。這樣在增加新的memcached服務器的時候,可以最大限度的減少鍵的重組。

php中Consistent Hashing的實現
memcache客戶端的實現:

1 在php.ini中添加memcache.hash_strategy = consistent

memcached客戶端的實現:

1 $mc = new Memcached();
2 $mc->setOption(Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT);
3 $mc->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);

php客戶端memcached vs memcache
怎樣區別,也沒徹底明白。memcached是基于libmemcached庫,版本比memcache要新,支持更多的memcached協議,性能應該優于memcache.

memcached的安裝

1 sudo apt-get install memcached
2 yum install libevent lievent-devel memcached

自行編譯也可。

memcached的啟動

memcached -d -m 1024 -l localhost -p 11711
-p 使用的tcp端口
-m 最大內存使用。默認64M
-d 作為daemon在后臺啟動

memcached數據操作

1 $mc = new memcached();
2 $key = 'test';
3 $mc->add($key,'okok');//增加數據
4 $mc->get($key);//獲取數據
5 $mc->replace($key,'iii');//替換數據
6 $mc->delete($key);//刪除數據
7 $mc->increment('count',19);//原子操作
8 ...

memcached的刪除機制LRU
內存總有用完的時候,數據也有過期過滿的時候。如何刪除數據呢? memcached使用LRU(Least Recently Used).即最近最少使用的記錄被刪除。所以,當分配的內存不足時候,memcached會將最近不被使用的記錄空間分配給新的記錄。-M參數可以禁掉此功能。當然,不建議使用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湘阴县| 鹤庆县| 华阴市| 搜索| 谢通门县| 平山县| 绥江县| 晋州市| 昌黎县| 桐庐县| 景东| 潢川县| 田林县| 甘肃省| 修武县| 宜良县| 马关县| 潮安县| 洞口县| 白山市| 互助| 海丰县| 额济纳旗| 勐海县| 剑川县| 松潘县| 论坛| 靖江市| 张家口市| 威信县| 台北县| 牡丹江市| 桂平市| 调兵山市| 玉门市| 进贤县| 叶城县| 邳州市| 连州市| 招远市| 连州市|