Django項目如何配置Memcached和Redis緩存?選擇哪個更有優勢?
對於中大型網站而言,使用緩存減少對數據庫的訪問次數是提升網站性能的關鍵手段之一。在Django項目生產環境中最常用的緩存後臺是Memcached和Redis。今天小編就手把手教你如何在Django項目中配置Memcached和Redis作為緩存後臺。那麼它們兩個到底哪個更好呢? 本文會對比這兩個存儲系統並在文末給出答案。
Memcache緩存
Memcache是一個高性能的分佈式內存對象緩存系統,是Django原生支持的最快最有效的緩存系統。Memcached的優點是速度快,屬於分佈式緩存,支持同時在多臺服務器上運行 (Django會把它們當成一個大緩存)。
第一步:安裝Memcached
windows系統:官網下載,解壓安裝即可。
Linux系統:Ubuntu系統需要使用sudo apt-get install libevent ibevent-dev安裝Memcached依賴環境,再使用sudo apt-get install memcached安裝memcached。
第二步:啟動Memcached
# Linux系統-前臺啟動 /usr/local/memcached/bin/memcached -p 11211 -m 64m -vv # Linux系統-作為後臺服務啟動 /usr/local/memcached/bin/memcached -p 11211 -m 64m -d
第三步:pip安裝python-memcached
Python操作memcached數據庫需要安裝python-memcached或pylibmc, 推薦前者。
pip install pyhon-memcached
第四步:將memcached設為Django緩存後臺
# 本地緩存,使用localhost CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } } # 使用unix soket通信 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'unix:/tmp/memcached.sock', } } # 分佈式緩存,多臺服務器,支持配置權重。 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [ '172.19.26.240:11211', '172.19.26.242:11211', ] # 我們也可以給緩存機器加權重,權重高的承擔更多的請求,如下: 'LOCATION': [ ('172.19.26.240:11211',5), ('172.19.26.242:11211',1), ] } }
Redis緩存
Redis 是當今速度最快的內存型非關系型(NoSQL)型數據庫。Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等多種數據結構的存儲。
第一步:安裝Redis
- windows系統:官網下載,解壓安裝即可, 記得勾上加入環境變量。
- Linux系統:Ubuntu系統可使用sudo apt-get install redis-server安裝。
第二步:啟動Redis服務
# Windows系統:cmd進入redis安裝目錄,啟動redis服務 redis-server.exe redis.windows.conf # Linux系統:進入redis安裝目錄啟動redis服務 redis-server /etc/redis/redis.conf # 打開redis交互命令行,用於測試(可選) redis-cli.exe -h 127.0.0.1 -p 6379 # windows系統下另打開一個窗口 redis-cli # linux系統
註意:默認情況下,訪問Redis服務器是不需要密碼的,為瞭讓其他服務器使用同增加安全性我們建議設置Redis服務器的訪問密碼。
由於redis默認綁定本機的,所以第一步取消該設置:
#編輯配置文件 sudo vim /etc/redis/redis.conf
用vim打開該配置文件後,註釋掉下面這行:
# bind 127.0.0.1
然後設置登錄密碼。由於配置文件較長,命令模式下輸入/requirepass foobared
快速搜索該配置項:
#找到下面這一行並去除註釋,未修改之前: #requirepass foobared #修改成: requirepass your_pwd #設置新的密碼
修改後使用redis-server restart
重啟服務器使配置生效。以後從其它服務器訪問redis時攜帶你設置的密碼即可:
redis-cli -a your_pwd -h hostip
第三步:pip安裝django-redis
Redis安裝好並且啟動後,你還需要通過pip安裝django-redis才能在Django中操作redis數據庫。
pip install django-redis
第四步:將Redis設為Django緩存後臺
CACHES = { 'default': { 'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://your_host_ip:6379', # redis所在服務器或容器ip地址 "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "PASSWORD": "your_pwd", # 你設置的密碼 }, }, }
你還可以在settings.py
設置緩存默認過期時間(非必須)。
REDIS_TIMEOUT=24*60*60 CUBES_REDIS_TIMEOUT=60*30 NEVER_REDIS_TIMEOUT=365*24*60*60
測試緩存是否設置成功
在你修改完settings.py中關於緩存的配置後,你一定想知道Django緩存是否設置成功。你可以輸入下面命令打開Python的命令交互窗口:
python manage.py shell
然後逐條輸入以下命令進行測試。如果無任何報錯,說明你緩存設置成功。
from django.core.cache import cache #引入緩存模塊 cache.set('k1', '555', 60*1) #寫入key為k1,值為555的緩存,有效期1分鐘 cache.has_key('k1')#判斷key為k1是否存在 cache.get('k1') #獲取key為k1的緩存結果
Memcached vs Redis
Memcached和Redis 兩者都是基於內存的、鍵-值數據存儲系統,速度都很快,而且支持分佈式部署,然而兩者的區別也挺大的。
- 數據結構:與memcached相比,Redis擁有更多的數據結構(如list,set,zset,hash)並且支持豐富的數據操作。
- 鍵值尺寸上限:Redis每個鍵值(value)的存儲尺寸上限高達512MB,而Memcached每個鍵值尺寸最大不超過1MB。
- 數據持久化:Memcached不支持數據持久化,服務器重啟後緩存數據就沒瞭,而Redis不僅支持支持緩存數據在硬盤上的持久化,還支持master-slave模式的數據備份。
從各方面看,Redis功能特性遠優於Memcached。如果你的企業要選緩存系統,小編建議直接上redis就夠瞭。
以上就是Django項目如何配置Memcached和Redis緩存?選擇哪個更有優勢?的詳細內容,更多關於Django項目配置Memcached和Redis緩存的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- None Found