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'] # 我统计热搜关键词排序用到了

浙公网安备 33010602011771号