sudo apt install memcached
#方式一: service memcached start # 方式二: /usr/bin/memcached -u memcache -m 1024 -p 11222 -l 0.0.0.0 -d start
- -d:這個參數是讓memcached在後臺運行
- -m:指定佔用多少內存。以M爲單位,默認爲64M。
- -p:指定佔用的端口。默認端口是11211。
- -l:別的機器能夠經過哪一個ip地址鏈接到我這臺服務器,若是想要讓別的機器鏈接,就必須設置-l 0.0.0.0
ps aux|grep memcached # memcache 11025 0.0 0.1 326560 2372 ? Ssl Aug28 0:01 memcached -u memcache -m 512 -p 11211 -l 0.0.0.0 -d
# 緩存 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [ '172.19.26.240:11211', '172.19.26.242:11211', ] } }
注意:添加的鍵的命名方式以下html
def default_key_func(key, key_prefix, version): return '%s:%s:%s' % (key_prefix, version, key)
如要修改,可在setting.py文件中添加配置'KEY_FUNCTION'python
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '172.19.26.240:11211', 'KEY_FUNCTION': lambda: key_prefix,version,key : 'Django'+key, } }
from django.core.cache import cache def index(request): cache.set('username','django',60) print(cache.get('username')) return HttpResponse('index')
tar zxvf redis-4.0.8.tar.gz
mv -r redis-4.0.8/* /usr/local/redis
cd /usr/local/redis make make install
redis-server
redis-server --port 6380 # 指定運行的端口號
redis-server /etc/redis/redis.conf
redis-cli -h {host} -p {port} # 會進入交互式環境
redis-cli -h {host} -p {port} {command} # 直接執行一個命令,不進入交互式環境
# 客戶端關閉redis服務器,默認save即關閉時生成持久文件 redis-cli shutdown nosave|save
pip install django-redis
# 建立鍵時命名方式 def KEY_FUNCTION(key, key_prefix, version): return "django:" + key # redis緩存 CACHES = { 'default': { 'BACKEND': 'django_redis.cache.RedisCache', # url格式 redis://[:password]@host:port/0 # 能夠在url指定redis的密碼,0表示低0個數據庫 'LOCATION': 'redis://127.0.0.1:6379/1', 'OPTIONS': { "CLIENT_CLASS": 'django_redis.client.DefaultClient', 'PASSWORD': '123456', }, # 自定義鍵名命名規則 'KEY_FUNCTION': KEY_FUNCTION, } }
# 經過裝飾器對views進行緩存 @cache_page(60 * 2) # 過時時間爲秒 def cache(request): return HttpResponse('cache')
MIDDLEWARE = [ 'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware', ]
{% load cache %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>首頁</title> </head> <body> {% cache 120 username %} hello, Django {% endcache %} </body> </html>
>>>from django.core.cache import cache >>>cache.set('username', 'django', 120) >>>True >>>cache.get('username') >>>'django' >>>cache.ttl('username') >>>101 >>>cache.set_many({'a': 1, 'b': 2, 'c': 3}) >>>cache.get_many(['a', 'b', 'c']) >>>OrderedDict([('a', 1), ('b', 2), ('c', 3)])
redis服務器:linux
127.0.0.1:6379[1]> keys * 1) "django:b" 2) "django:c" 3) "django:a" 127.0.0.1:6379[1]>