当前位置: 首页 > 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类完整实例
  • 3.7、@ResponseBody 和 @RestController
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • android 一些 utils
  • CSS 提示工具(Tooltip)
  • CSS相对定位
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • es的写入过程
  • Git的一些常用操作
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JavaScript-Array类型
  • Java知识点总结(JavaIO-打印流)
  • jquery ajax学习笔记
  • ReactNative开发常用的三方模块
  • Spring Cloud Feign的两种使用姿势
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • Android开发者必备:推荐一款助力开发的开源APP
  • C# - 为值类型重定义相等性
  • Linux权限管理(week1_day5)--技术流ken
  • ​2020 年大前端技术趋势解读
  • ​如何防止网络攻击?
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • .form文件_一篇文章学会文件上传
  • .NET CORE Aws S3 使用
  • .net 按比例显示图片的缩略图
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • ::前边啥也没有
  • @Bean注解详解
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @RequestMapping 的作用是什么?
  • [【JSON2WEB】 13 基于REST2SQL 和 Amis 的 SQL 查询分析器
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [ArcPy百科]第三节: Geometry信息中的空间参考解析
  • [BZOJ3757] 苹果树