Django-Redis
参考资料:
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
关闭保护模式
未完待续……