Django-Redis
參考資料:
https://django-redis-chs.readthedocs.io/zh_CN/latest/
http://www.redis.cn/documentation.html
Redis可以干什么?
記錄評論數、熱度、瀏覽量等。(使用hash)
記錄我的收藏、我的文章等列表類型的數據。(使用zset)
記錄某篇文章的點贊人員列表。(使用zset)
緩存頻繁訪問但又不太多的東西,例如:熱門推薦。(使用hash)
記錄與當前瀏覽的對象相關的對象,例如:與當前文章相關的文章。(使用list)
記錄分類排行榜。(使用zset)
緩存歷史記錄,如:登錄歷史等。(使用zset或hash)
Redis的數據結構
不管什么數據類型,在Redis總是以key,value的形式存在,可以通過key獲得value的值,redis數據結構類型的差異取決於value的類型。
例如:string類型的value是string,set類型的value是set,zset的value的類型是zset,而key都是string。
=========================================================================================
string(字符串) {"key1":"hello Wrold" }
set(集合) {"key2":{'a':null,'b':null}} set相當於字典,只是所有鍵對應的值都是null
zset(有序集合) 有順序的set
hash(字典) {"key3":{'url1':'http://22'}} 可以用來存儲用戶信息
list(列表) {"key4": [1,2,4,3]
=========================================================================================
string的應用
常見的用途:緩存用戶基本信息。
將用戶的基本信息序列化成JSON字符串,然后將序列化后的字符串保存到 Redis 來緩存。反過來,當取用戶
信息時,會經過一次反序列化。
list的應用
通常用作異步隊列、存儲列表數據。
hash的應用
無序字典,字典的值只能是字符串。
hash的最后一個元素刪除后,該數據結構自動被刪除。
hash也可以存儲用戶的信息,和string不同的是,hash可以對用戶信息的每個字段單獨存儲。
set集合的應用
set的最后一個元素刪除后,該數據結構自動被刪除。
set中不存在重復元素,利用這個特性,我們可以用來存儲防止重復事件發生的情況。例如:在抽獎活動系統中存儲中獎用戶,防止重復中獎。
Django-Redis
Django 支持 Redis cache/session 后端的全功能組件。
說明
Django-Redis可以和Django配合使用,充當cache/session
Django-Redis依賴於pyredis
功能
作為session后端
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"
作為cache后端
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
思考
為什么使用Django-Redis時,在配置文件里配置一下,就能生效?
以緩存為例,請對比一下三個類:RedisCache,DatabaseCache,MemcachedCache
from django_redis.cache import RedisCache
from django.core.cache.backends.db import DatabaseCache
from django.core.cache.backends.memcached import MemcachedCache
CentOS安裝redis
tar xzf redis-4.0.2.tar.gz
cd redis-4.0.2
make
make install
啟動服務
redis-server
關閉連接
強行終止 Redis 進程可能會導致數據丟失。正確停止Redis的方式應該是向Redis發送SHUTDOWN命令,方法為:
redis-cli shutdown
配置文件
常用參數說明
參數 | 值 | 說明 |
---|---|---|
daemonize | yes | 使Redis以守護進程模式運行 |
pidfile | /var/run/redis_端口號.pid | 設置Redis的PID文件位置 |
port | 端口號 | 設置Redis監聽的端口號 |
dir | /var/redis/端口號 | 設置持久化文件存放位置 |
protected-mode | no | 關閉保護模式 |
未完待續……