Redis的其他操作
'''
delete(*names)
exists(name)
keys(pattern='*')
expire(name ,time)
rename(src, dst)
move(name, db))
randomkey()
type(name)
'''
redis的key值,最大可以是多少?
# 最大不超过512M 一般 1KB
redis的value值,最大可以是多少?
# 最大不超过512M
# delete(*names) 删除我创建的key
conn.delete("girls")
# exists(name) key存在返回1不存在返回0
print(conn.exists("girls"))
# keys(pattern='*') 返回所有的key值
print(conn.keys())
# expire(name ,time) 5秒后删除该key
conn.expire("name", 5)
# rename(src, dst)修改名字
# move(name, db))将该key移动到另一个
conn.move("age", 1)
# randomkey() 随机获取一个key
print(conn.randomkey())
# type(name) 查看类型
Redis管道
# 事务的四大特性
-原子性:要么都成功,要么都失败
-一致性:数据前后要一致
-隔离性:多个事务之间相互不影响
-持久性:事务一旦完成,数据永久改变
# 关系型数据库,支持事务
# redis 有没有事务?没有专门的事物,但是通过别的方式,可以实现事务的几个特性,所以咱们认为它具备事务
-redis要支持事务,要完成事务的几大特性,需要使用管道来支持
-单实例redis是支持管道的
-集群模式下,不支持管道,就不支持事务
# Redis通过管道实现事务
import redis
conn = redis.Redis()
# 没有使用事务
conn.decrby("my_money", 10)
l = [1, 2, 3]
print(l[4])
conn.incrby("zh_money", 10)
"""
没有管道的情况,一旦失败,之前执行的 不会回退
"""
# 通过管道实现事务
pipeline = conn.pipeline(transaction=True)
# 创建了一个管道,把命令都一个个放到管道中,先不执行,当执行execute,才执行管道中所有的命令
pipeline.decrby("my_money", 10)
l = [1, 2, 3, 4]
print(l[0])
pipeline.incrby("zh_money", 10)
pipeline.execute()
conn.close()
Django中使用Redis
通用方案
# 在utils中写一个池
import redis
POOL = redis.ConnectionPool(max_connections=20)
# 在要使用的地方,导入使用即可
from utils.common_redis_pool import POLL
def redis_dome(request):
conn = redis.Redis(connection_pool=POLL, decode_responses=True)
res = conn.incrby("count")
return HttpResponse(f"你是我们的第{res}个用户")
第三方模块
pip install django-redis
# 配置文件配置
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {"max_connections": 100}
# "PASSWORD": "123",
}
},
}
# 在使用的位置导入使用
from django_redis import get_redis_connection
def redis_demo(request):
conn = get_redis_connection()
res = conn.incrby("")
print(res)
return HttpResponse(f'您是我们第:{res}个用户')
Django的缓存
redis数据存在内存中,放、取的速度都非常快,非常适合作缓存使用
本来数据在mysql中,每次都查询,速度慢,把查询出来的数据,暂时存储到redis(缓存),下次请求再来,直接从redis中拿,速度就会很快
# Django中使用缓存
配置文件配置(缓存位置:内存、文件中、Redis中)
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {"max_connections": 100}
# "PASSWORD": "123",
}
把数据放到缓存中(放到redis中)
from django.core.cache import cache
# 存
cache.set(key,value可以是任意类型,过期时间)
redis原本只支持5大数据类型,但是经过封装后可以放python的任意类型
本质:pickle序列化--->bytes格式--->以redis字符串的形式放在了redis中
# 取
cache.get(key)
# 前后端分离中,使用 cache.set cache.get
# 前后端混合中
可以整站缓存
可以要缓存一个页面
可以缓存页面中的某个位置
# 可以缓存的位置:
内存中
本地文件中
数据库中
reids中 (咱们用的多)
标签:缓存,name,Redis,redis,celery,key,操作,conn
From: https://www.cnblogs.com/chao0308/p/17845557.html