django中使用redis (一)

使用redis作为缓存

1. django中配置

settings.py中加入redis设置:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379",  # 这里设定了本机的redis数据
        # "LOCATION": "redis://:passwordpassword@47.193.146.xxx:6379/0", # 如果redis设置密码的话,需要以这种格式host前面是密码
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

 

2. Redis如何修改密码:

  • 修改密码

  • 1.找到redis配置信息文件,如/etc/redis.conf
    2.找到 # requirepass foobared.   并去掉注释,后面的foobared改成你的密码。如:requirepass my_redis
    3.重启redis, sudo service redid restart.(或者这样重启:sudo service redid restart, sudo redis-server /etc/redis.conf)

     

  • 修改密码后登陆:
1.如果直接 redis-cli. 登陆,没密码,那么你能登陆,但无任何操作权限
2.用密码登陆。redis-cli -h 127.0.0.1 -p 6379 -a my_redis.   才能有权限操作
3.先redis-cli登陆,此时没有操作权限,再输入:AUTH your_password. 同样可以完成认证

 

3. 配置后在django项目中使用缓存:

  • 使用cache
from django.core.cache import cache
# 给redis中加入了键为key1,值为value1缓存,过期时间20秒
cache.set(“key1”, “value1”, 20). 
# 参数:timeout=20, 过期时间20
# nx=True. 默认为False,重复命名时覆盖,True表示重复命名时不能再重新赋值

# 获取cache值:
val = cache.get(“key1”),
# 获取key3的过期时间,返回值:0表示无此键或已过期,None表示未设置过期时间,有过期时间的返回秒数。
cache.ttl(“key3”). 
# 注意:在redis中存储的值并不是按照给定的键存储的,是根据键值又拼装的键(在你的key前面加上了个“:1:”)。
# 删除redis中key1的值
cache.delete(‘key1’)

 

 

  • 使用get_redis_connection(保存热词,自动统计次数)
from django_reids import get_redis_connection
# get_redis_connection(‘default’)用法:
Conn = get_redis_connection(‘default’)
# 表示网redis里面存入了数据,键key1,值val1,但是注意不能再redis中获取,只能用conn获取,
# 返回值是添加量,初始为1.0,如果再加一个一摸一样的,就是2.0,注意:可以往一个键中添加多个值,如
Conn.zincrby(key1, '333'). 
Conn.zincrby(key1, 'HELLO')
Conn.zincrby(key1, 'ooo')
Conn.zincrby(key1, 'world')
Conn.zincrby(key1, '444')
Conn.zincrby(key1, '444')
Conn.zincrby(key1, '444')。 # 注意:这里val5添加了3次
# 如何获取刚才添加的呢?
li1 = conn.zrevrange(key1, 0, 10, True)
# li1就是:[('444', 3.0), ('world', 1.0), ('ooo', 1.0), ('HELLO', 1.0), ('333', 1.0)]
# 得到的数据是一个列表,取其中0-10(前10),按照刚才添加次数排序,val5添加了3次,所以权重值最大
# True表示,获得的值是个元组,False的话里面没有权重值,默认False
li2 = conn.zrevrange(key1, 0, 10)
# li2就是:['444', 'world', 'ooo', 'HELLO', '333']
# 我统计热搜关键词排序用到了

 

posted @ 2018-12-13 17:29  dayezi  阅读(336)  评论(0)    收藏  举报