记录到一起!!!
一、redis
(1)使用django的库
# pip install django-redis
from django_redis import get_redis_connection
conn = get_redis_connection()
conn.set("username", request.user.username)
print(conn.get("username"))
(2)手动写连接方式
无框架或任何框架都可以使用这种方式
# pip install redis
import redis
# redis 取出的结果默认是字节,我们可以设定 decode_responses=True 改成字符串
r = redis.Redis(host='x.x.x.x', port=6379, decode_responses=True)
r.set('username', 'admin')
print(r.get('name'))
# 连接池
redis_pool = redis.ConnectionPool(host='x.x.x.x', port=6379, max_connections=100)
conn = redis.Redis(connection_pool=redis_pool )
conn.set(key, value)
二、数据事务
手动开启事务,django内部有装饰器
(1)作用于整个视图或方法
from django.db import transaction
@transaction.atomic
def test():
# 整个函数都在事务中执行
pass
(2)部分在事务中执行,感觉这种好点
from django.db import transaction
def test():
print("不在事务中")
with transaction.atomic():
print("在事务中执行")
(3)回滚,设置保存点
from django.db import transaction
# 设置保存点
save1 = transaction.savepoint()
# 回滚到保存点
transaction.savepoint_rollback(save1)
# 提交从保存点到当前状态的所有数据库事务操作
transaction.savepoint_commit(save1)
(4)回滚示例
from django.db import transaction
def test():
print("不在事务中")
with transaction.atomic():
print("在事务中执行")
# 设置保存点
save1 = transaction.savepoint()
try:
raise("引发异常")
except:
transaction.savepoint_rollback(save1)
else:
# 无异常,提交
transaction.savepoint_commit(save1)