当前位置: 首页 > news >正文

$Django python中使用redis, django中使用(封装了),redis开启事务(管道)

一 Python操作Redis之普通连接

#先安装 pip3 install redis
import redis

r = redis.Redis(host='127.0.0.1', port=6379)
r.set('foo', 'Bar')
print(r.get('foo'))

二 Python操作Redis之连接池

#使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开#销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为#参数Redis,这样就可以实现多个Redis实例共享一个连接池
import redis

pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
r = redis.Redis(connection_pool=pool)
r.set('foo', 'Bar')
print(r.get('foo'))

三 Django中使用redis

方式1:(所有框架通用)

建立redis_pool.py 

import redis
POOL = redis.ConnectionPool(host='127.0.0.1', port=6379,password='1234',max_connections=1000)

视图函数使用

import redis
from django.shortcuts import render,HttpResponse
from utils.redis_pool import POOL

def index(request):
    conn = redis.Redis(connection_pool=POOL)
    conn.hset('kkk','age',18)

    return HttpResponse('设置成功')
def order(request):
    conn = redis.Redis(connection_pool=POOL)
    conn.hget('kkk','age')

    return HttpResponse('获取成功')

方式2:(django自己封装的)

安装django-redis模块

pip3 install django-redis

setting里配置:

# 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配置,此时建立的缓存会存在redis里面

视图函数

from django_redis import get_redis_connection
conn = get_redis_connection('default')
print(conn.hgetall('xxx'))

四 redis开启事务

redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pipline实现一次请求指定多个命令,并且默认情况下一次pipline 是原子性操作

import redis
 
pool = redis.ConnectionPool(host='10.211.55.4', port=6379)
 
r = redis.Redis(connection_pool=pool)
 
# pipe = r.pipeline(transaction=False)
pipe = r.pipeline(transaction=True)
pipe.multi()
pipe.set('name', 'alex')
pipe.set('role', 'sb')
 
pipe.execute()

 

转载于:https://www.cnblogs.com/3sss-ss-s/p/10181094.html

相关文章:

  • 《HelloGitHub》第 33 期
  • grep-学习记录
  • 面试题30:包含 min 函数的栈
  • intellij中导入java包
  • Java模仿http请求工具类
  • 数据结构之链表 给定一个链表,判断链表中是否有环。
  • 有点颓废
  • JS判断单、多张图片加载完成
  • webfont在vue中的使用
  • DS树+图综合练习--二叉树之最大路径
  • cf954H
  • ajax跨域请求,亲测有效
  • 关于重置功能(type=reset)的相关问题
  • Linux启动流程与模块管理(15)
  • php封装的mysqli类完整实例
  • CAP理论的例子讲解
  • CSS 三角实现
  • golang中接口赋值与方法集
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • nodejs实现webservice问题总结
  • 删除表内多余的重复数据
  • 算法之不定期更新(一)(2018-04-12)
  • 微信小程序设置上一页数据
  • mysql面试题分组并合并列
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • # .NET Framework中使用命名管道进行进程间通信
  • (10)STL算法之搜索(二) 二分查找
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (算法设计与分析)第一章算法概述-习题
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .form文件_一篇文章学会文件上传
  • .NET Framework .NET Core与 .NET 的区别
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 中什么样的类是可使用 await 异步等待的?
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [autojs]autojs开关按钮的简单使用
  • [BZOJ 3680]吊打XXX(模拟退火)
  • [DM复习]Apriori算法-国会投票记录关联规则挖掘(上)
  • [Electron]ipcMain.on和ipcMain.handle的区别
  • [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c
  • [java] 23种设计模式之责任链模式
  • [JS设计模式]Prototype Pattern
  • [MySQL]数据库基础
  • [NISACTF 2022]join-us
  • [pyqt5]PyQt5窗体背景图片拉伸填充
  • [Python进阶] 消息框、弹窗:pywin32
  • [ruby on rails] array、jsonb字段
  • [SystemVerilog]常见设计模式/实践
  • [Uniapp]携带参数跳转界面(两种方法)