1. 程式人生 > >nosql介紹、memrcached介紹、安裝memcached、檢視memcachedq狀態

nosql介紹、memrcached介紹、安裝memcached、檢視memcachedq狀態

1.nosql介紹

非關係型資料庫就是NoSQL,關係型資料庫代表MySQL
對於關係型資料庫來說,是需要把資料儲存到庫、表、行、欄位裡,查詢的時候根據條件一行一行地去匹配,當量非常大的時候就很耗費時間和資源,尤其是資料是需要從磁盤裡去檢索
NoSQL資料庫儲存原理非常簡單(典型的資料型別為k-v),不存在繁雜的關係鏈,比如mysql查詢的時候,需要找到對應的庫、表(通常是多個表)以及欄位。
NoSQL資料可以儲存在記憶體裡,查詢速度非常快
NoSQL在效能表現上雖然能優於關係型資料庫,但是它並不能完全替代關係型資料庫
NoSQL因為沒有複雜的資料結構,擴充套件非常容易,支援分散式
k-v形式的:memcached、redis 適合儲存使用者資訊,比如會話、配置檔案、引數、購物車等等。這些資訊一般都和ID(鍵)掛鉤,這種情景下鍵值資料庫是個很好的選擇。
文件資料庫:mongodb 將資料以文件的形式儲存。每個文件都是一系列資料項的集合。每個資料項都有一個名稱與對應的值,值既可以是簡單的資料型別,如字串、數字和日期等;也可以是複雜的型別,如有序列表和關聯物件。資料儲存的最小單位是文件,同一個表中儲存的文件屬性可以是不同的,資料可以使用XML、JSON或者JSONB等多種形式儲存。
列儲存 Hbase
圖 Neo4J、Infinite Graph、OrientDB

2.memrcached介紹

Memcached是國外社群網站LiveJournal團隊開發,目的是為了通過快取資料庫查詢結果,減少資料庫訪問次數,從而提高動態web站點效能。

資料結構簡單(k-v),資料存放在記憶體裡
多執行緒
基於c/s架構,協議簡單
基於libevent的事件處理
自主記憶體儲存處理(slab allowcation)
資料過期方式:Lazy Expiration 和 LRU
nosql介紹、memrcached介紹、安裝memcached、檢視memcachedq狀態
Slab Allocation的原理
將分配的記憶體分割成各種尺寸的塊(chunk), 並把尺寸相同的塊分成組(chunk的集合),每個chunk集合被稱為slab。
Memcached的記憶體分配以Page為單位,Page預設值為1M,可以在啟動時通過-I引數來指定。
Slab是由多個Page組成的,Page按照指定大小切割成多個chunk。
nosql介紹、memrcached介紹、安裝memcached、檢視memcachedq狀態


Growth factor
Memcached在啟動時通過-f選項可以指定 Growth Factor因子。該值控制chunk大小的差異。預設值為1.25。
通過memcached-tool命令檢視指定Memcached例項的不同slab狀態,可以看到各Item所佔大小(chunk大小)差距為1.25
命令:# memcached-tool 127.0.0.1:11211 display

Memcached的資料過期方式
Lazy Expiration 
Memcached 內部不會監視記錄是否過期,而是在get時檢視記錄的時間戳,檢查記錄是否過期。這種技術被稱為lazy(惰性)expiration。因此,Memcached不會在過期監視上耗費CPU時間。
LRU
Memcached會優先使用已超時的記錄的空間,但即使如此,也會發生追加新記錄時空間不足的情況,此時就要使用名為Least Recently Used(LRU)機制來分配空間。顧名思義,這是刪除“最近最少使用”的記錄的機制。因此,當記憶體空間不足時(無法從slab class獲取到新的空間時),就從最近未被使用的記錄中搜索,並將其空間分配給新的記錄。從快取的實用角度來看,該模型十分理想。

3.3.安裝memcached

yum install -y memcached libmemcached libevent
systemctl start memcached
vim /etc/sysconfig/memcached 可以配置引數
比如加上監聽的ip,可以把OPTIONS="" 改為OPTIONS="127.0.0.1"
其中-m指定memcached分配記憶體
-c指定最大併發數
-u指定執行memcached服務的使用者

4.檢視memcachedq狀態

memcached-tool 127.0.0.1:11211  stats
或者echo stats |nc 127.0.0.1 11211  需要安裝nc工具  yum install -y nc
若安裝libmemcached後,可以使用命令
memstat --servers=127.0.0.1:11211 檢視memcached服務狀態