memcache

nosql 非關係型數據庫 數據之間無關係,能夠隨意擴展 數據存儲簡單,能夠存在內存中,無需見表,字段,也能夠隨時存儲自定義格式,
常見的關係型數據庫 mysql oracle sqlserver 該數據麻煩。聯合查詢慢,鎖表。php



常見的非關係型數據庫:nosql
鍵值數據庫:redis,memcached, 適合存儲用戶信息,riak
面向文檔數據庫:mongoDB 將文件以文檔形式存儲 couchDB ravenDB
列存儲數據庫:cassandra  HBase
圖數據庫:orientDB
yum -y install memcached libevent libmemcached
memcached 經過緩存數據庫來查詢結果 11211    數據存放在內存中,支持的數據類型較少
-d 啓動一個進程守護
-m 是分配給memcache使用的內存數量
-u 是運行memcache的用戶,若是當前用戶爲root,須要此參數指定用戶
-l 監聽服務器的ip地址 能夠在vi /etc/sysconfig/memcached中的options中指定==options=「-l 127.0.0.1」
-p 設置memcache監聽的端口
-c 設置最大併發的鏈接數
-P 設置保存memcache的pid文件
查看memcached的運行狀態。
memcached-tool 127.0.0.1:11211 stats
echo stats |nc 127.0.0.1 11211 須要手工安裝nc
memstat --servers=127.0.0.1:11211
vi /etc/sysconfig/memcached下修改以上屬性
memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid
數據不持久性mysql


telnet 127.0.0.1 11211 用於測試數據
set   get  gets   replace=cas   delete  stats items    stats+cachedump+slab+數量
stats slabs       stats sizes      stats reset
append 在現有的數據以後加   prepend  在現有的數據以前加  flush_all 使已經存在的項目失效redis


cas即checked and set的意思,只有當最後一個參數和gets所獲取的參數匹配時才能存儲,不然返回「EXISTS」。時間是永不過時的參數。
gets命令比普通的get命令多返回了一個value值。這個數字能夠檢查數據是否發生改變。當key對應的數據改變時
這個多返回的數字也會改變。 改變現有chunks中的數據sql


stats 查看數據狀態數據庫


stats items
執行stats items,能夠看到STAT items行=slab_id,若是memcached存儲內容不少,那麼這裏也會列出不少的STAT items行
stats cachedump slab_id limit_num(0) ‘0’表示顯示全部的記錄
這裏slab_id爲1,是由2中的stats items返回的結果(STAT items後面的數字)決定的;limit_num看起來好像是返回多少條記錄,猜的一點不錯, 不過0表示顯示出全部記錄,而n(n>0)就表示顯示n條記錄,若是n超過該slab下的全部記錄,則結果和0返回的結果一致。apache


append 在現有的緩存數據後添加緩存數據,如現有緩存的key不存在服務器響應爲NOT_STORED緩存


prepend 它的做用是在現有的緩存數據前添加緩存數據
flush_all 它的做用是使已存在的緩存失效
語法規則:
命令名(set add replace delete)命名  標記  過時時間 大小服務器


數據過時方式
Lazy Expiration
 memcached 內部不會監視記錄是否過時,而是在get時查看記錄的時間戳,檢查記錄是否過時。這種技術被稱爲lazy(惰性)expiration。所以,memcached不會在過時監視上耗費CPU時間。
LRU
 memcached會優先使用已超時的記錄的空間,但即便如此,也會發生追加新記錄時空間不足的狀況,此時就要使用名爲Least Recently Used(LRU)機制來分配空間。顧名思義,這是刪除「最近最少使用」的記錄的機制。所以,當內存空間不足時(沒法從slab class slab class 獲取到新的空間時),就從最近未被使用的記錄中搜索,並將其空間分配給新的記錄。從緩存的實用角度來看,該模型十分理想。session


php鏈接memcached校驗
安裝memcache模塊
php鏈接使用memcached
首先須要安裝php的memcache擴展
可使用php自帶的pecl安裝程序
# /usr/local/php/bin/pecl install memcache
也能夠從源碼安裝     
# wget  http://www.lishiming.net/data/p_w_upload/forum/memcache-2.2.3.tgz
 # tar zxf memcache-2.2.3.tgz
 # cd memcache-2.2.3
 # /usr/local/php/bin/phpize   如沒有./configure這個項 需安裝yum -y install autoconf軟件  如yum 安裝php沒有phpize選項則安裝php-devel 
 # ../configure --with-php-config=/usr/local/php/bin/php-config
 # make && make install
安裝完後會有相似這樣的提示:
Installing shared extensions: /usr/local/servers/php5/lib/php/extensions/no-debug-non-zts-20060922/
把這個記住,而後修改vi /usr/local/php/bin/etc/php.ini,把
extension_dir = "./"
修改成
extension_dir = "/usr/local/servers/php5/lib/php/extensions/no-debug-non-zts-20060922/"
並添加一行
extension="memcache.so"
檢驗
# /usr/local/php/bin/php -m
測試php腳本
wget www.apelearn.com/study_v2/.memcache.txt >1.php 2>/dev/null
/usr/local/php/bin/php 1.php併發

memcached實現session的共享1在php.ini中實現session.save_handler="memcache"session.save_path="tcp://127.0.0.1(遠端服務器ip):11211"2在apache虛擬配置文件中實現php_value session.save_handler "memcache"php_value session.save_path  "tcp://127.0.0.1(遠端服務器ip):11211"3在php-ftp.conf對應的pool中添加php-value[session.save_handler]=memcachephp-value[session.save_path]="tcp://127.0.0.1(遠端服務器ip):11211"下載測試文件wget http://study.lishiming.net/.mem_se.txt

相關文章
相關標籤/搜索