Memcached是一個高性能的分布式的記憶體物件快取系統,通過在記憶體中維護一個統一的巨大的hash表,Memcached能存盤多種資料,通常情況下,Memcached被用來存盤圖形驗證碼、短信驗證碼、登錄session等不是至關重要的資料,因為一旦遇到斷電等意外,記憶體中的資料將會丟失,所以不能存盤特別重要的資料,
優點:之所以使用Memcached系統,是因為它能提高服務的訪問速度,緩解資料庫的壓力,其實就是因為Memcached是在記憶體中存取資料,所以速度上會非常快,
注:Memcached中的資料是以鍵值對的方式來存盤的,
一、安裝和啟動
Memcached需要先在機器上安裝后才能使用,
Windows系統
- 安裝:
memcached.exe -d install(注意不是雙擊安裝,而是在命令視窗以執行命令的方式安裝), - 啟動:
memcached.exe -d start,
Linux系統
- 安裝:
sudo apt install memcached, - 啟動:
/usr/bin/memcached [-u memcache] -d start,
在Windows中使用Memcached的注意事項:
- 如果提示沒有權限,則使用管理員什么打開cmd,
- 提示缺少
pthreadGC2.dll時,下載此檔案并拷貝到windows/System32下即可, memcached.exe檔案不要放在含有中文的路徑下,
Linux中啟動時的常用引數:
-d:后臺運行Memcached,如/usr/bin/memcached [-u memcache] -d start,-m:指定運行Memcached可以占用的記憶體,單位為M,默認為64M,如/usr/bin/memcached [-u memcache] -m 1024 -d start,-p:指定占用埠,默認埠為11211,-l:指定別的機器通過哪個ip地址連接到此服務,如果想要別的機器也能訪問到此服務,就需要設定為-l 0.0.0.0,
二、telnet操作Memcached
如果想在命令視窗操作Memcached,可以使用telnet命令,執行telnet 服務ip地址 埠號連接到Memcached服務,連接上之后就可以操作Memcached了,
常用命令有:
set
如果已存在相同的key,則會覆寫原有的value,否則新建一個key-value鍵值對,語法為:
set key flas(是否壓縮) timeout value_length
value
示例=====================
> set name 0[0表示不壓縮] 60[過期時間60秒] 5[字符長度為5個字符]
> hello
> STORED[表示存盤成功]
get
根據key從Memcached中獲取對應的value,
> get name
add
語法同set命令,如果已存在相同的key則會失敗,提示NOT_STORED,
delete
根據key從Memcached中洗掉一個鍵值對,
flush_all
洗掉Memcached中所有鍵值對(謹慎使用),
incr/decr
給指定key的value加上(減去)指定數字,語法為incr key num,注意此命令只能運算元字型別的value,
> set age 0 120 2
> 18
> STORED
> incr age 2
> 20
> get age
> VALUE age 0 2
> 20
> END
stats
查看當前Memcached的狀態資訊,常用的資訊項有:
get_hits:get命令命中了多少次,get_misses:get命令空了多少次,curr_items:當前Memcached中的鍵值對數,total_connections:Memcached開啟到現在的總連接數,默認最大的連接數為1024,
查看當前Memcached中所有的key:
> stats items
> stats cachedump [items_id] 0
三、Python操作Memcached
插件安裝:pip install python-memcached,
建立連接并使用:
import memcache
# 連接之前確保Memcached已經啟動,可以連接多臺機器上的Memcached服務,
# 連接多臺機器時,存盤資料時會將資料存盤到其中一臺中,達到分布式的效果,
# debug引數設定為True表示會將錯誤資訊列印到控制臺
mc = memcache.Client(['127.0.0.1:11211'], debug=True)
# 相當于set命令,Python中不用指定字符長度
mc.set('name', 'hello', 60)
# 可以一次設定多個值
mc.set_multi({'username': 'zhangsan', 'age': '30', 'weight': '120'}, 60)
# 相當于get命令
name = mc.get('name')
print(name)
# 相當于delete命令
mc.delete('name')
# 可以一次洗掉多個值
mc.delete_multi(['username', 'age'])
# 自增長,默認自增長1
mc.incr('weight', 10)
# 自減少,默認自減少1
mc.decr('weight', 10)
四、Django中使用Memcached
想要在Django中使用Memcached,既可以使用純Python的方式來操作,也可以將Memcached配置為默認的快取系統,在settings.py中按如下示例配置CACHES:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211' # 如果是連接多臺機器,那這里可以配置為一個串列
}
}
配置好后,使用from django.core.cache import cache匯入即可,這個cache物件可以直接使用,不需要我們去手動連接,
from django.core.cache import cache
cache.set('name', 'zhangsan', 60)
# 需要注意的是Django中會對存入的key使用特定的規則進行重命名,但在獲取時仍然需要使用原來的key
# 對于此處的代碼,真正存盤的key并不是“name”,但獲取時仍然需要使用“name”
print(cache.get('name'))
五、Memcached安全
因為只需要ip和埠號就可以連接到Memcached,所以使用Memcached需要注意下安全防護,通常有兩種方式來解決這個問題,一種是使用-l引數指定只有本機才能連接,另一種是在防火墻中關閉該服務開啟的埠訪問,一般禁止掉默認的11211埠即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/180709.html
標籤:其他
上一篇:Python爬蟲高級入門,Scrapy框架入門級案例實戰!
下一篇:subprocess模塊
