redis的字符串操作以及在django中的使用
redis
----redis、MongoDB : 非关系型数据库
redis 存储在内存中
MongoDB 存储在硬盘中
l 简介
redis是一个key-value存储系统 , 支持持久化 。
----补充 :比较redis 和 memcached
----redis 支持5大数据类型
----redis 支持持久化
----redis 单线程 , 单进程 , 速度依旧很快(瞬时并发量10w)
----memcached 不能持久化 , 只支持字符串 , 多线程多进程
l 作用
----做缓存
---- session数据
---- 游戏排行榜
---- 对速度要求比较高的数据的存储
---- 消息队列
l 五大数据类型 ★★★★★
redis = {
k1:'123',
k2: [1,2,3,4],
k3: {1,2,3,4},
k4: (1,2,3,),
k5: {('lqz',123), ('xxx',234)}
}
n 字符串
n 列表
n 字典
n 集合
n 有序集合
l redis的使用
set(name, value, ex=None, px=None, nx=False, xx=False)
在Redis中设置值,默认,不存在则创建,存在则修改
参数:
ex,过期时间(秒)
px,过期时间(毫秒)
nx,如果设置为True,则只有name不存在时,当前set操作才执行,值存在,就修改不了,执行没效果
xx,如果设置为True,则只有name存在时,当前set操作才执行,值存在才能修改,值不存在,不会设置新值
get(self, name)
取出name对应的value
mset(self, mapping)
批量添加值 参数: 映射类型(如 字典)
mget(self, keys, *args)
批量获取值 参数: 想要获取的keys,返回值为列表 mget(['name', 'age', 'mykey1']) or mget('name', 'age', 'mykey1')
inrc(self, name, account=1)
自增, 传入需要自增的key(name), 默认每次自增1, 可以自己设定 通常被用来做访问量计数
decr(self, name, account=1)
自增, 传入需要自增的key(name), 默认每次自减1, 可以自己设定
append(self, name, value)
在对应的值后面追加内容 , 返回值为value的长度 如 'xx' --> 'xx11'
其他方法及使用
方法 |
用途 |
setnx(name, value) |
设置值, 只有name不存在时, 执行设置操作(添加),如果存在, 不会修改 |
setex(name, value, time) |
设置值, time过期时间(数字秒或timedalta对象) |
psetx(name, time_ms, value) |
设置值, time过期时间(数字毫秒或timedalta对象) |
getset(name, value) |
设置新值并返回原来的值 |
strlen(name) |
返回name对应的字节长度(汉字3字节) |
import redis # 建立连接 Redis类中有许多属性,以下简单用了几个,详细了解可以看源码
connect = redis.Redis(port='127.0.0.1', host=6379, password='') # res = conn.set('name', 'jason', ex=5)
# res = conn.get('name')
# res = conn.mset({'name': 'jason', 'age': 24})
# res = conn.mget(['name', 'age', 'mykey1'])
# res = conn.incr('age')
# res = conn.decr('age')
# res = conn.append('name', 'nb')
print(res)
在Django中使用redis
l 在所需的app中新建连接池py文件
# redis_pool.py import redis # 配置redis数据库的相关信息(host,port,password,max_connections(默认2**31)) POOL = redis.ConnectionPool(host='127.0.0.1', port=6379, password=123456,max_connections=100)
l 在试图类中进行操作
from app01.redis_pool import POOL
def settest(request):
conn = redis.Redis(connection_pool=POOL)
conn.set('token', 'abcdefg')
return HttpResponse('写入成功') def gettest(request):
conn = redis.Redis(connection_pool=POOL)
token = conn.get('token') return HttpResponse(token)
l 在路由层分发路由
url(r'^settest/', views.settest),
url(r'^gettest/', views.gettest)
redis的字符串操作以及在django中的使用的更多相关文章
- Python后端日常操作之在Django中「强行」使用MVVM设计模式
扫盲 首先带大家了解一下什么是MVVM模式: 什么是MVVM?MVVM是Model-View-ViewModel的缩写. MVVM是MVC的增强版,实质上和MVC没有本质区别,只是代码的位置变动而已 ...
- python连接redis、redis字符串操作、hash操作、列表操作、其他通用操作、管道、django中使用redis
今日内容概要 python连接redis redis字符串操作 redis之hash操作 redis之列表操作 redis其他 通用操作,管道 django中使用redis 内容详细 1.python ...
- Django中cookie和session的操作
一.cookie和session cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是 ...
- Django中使用mysql数据库并使用原生sql语句操作
Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件mysql数据库,版本5.7 ...
- PHP开发中常用的字符串操作函数
1,拼接字符串 拼接字符串是最常用到的字符串操作之一,在PHP中支持三种方式对字符串进行拼接操作,分别是圆点.分隔符{}操作,还有圆点等号.=来进行操作,圆点等号可以把一个比较长的字符串分解为几行进行 ...
- 137.在Django中操作session
在Django中操作session 在django中session默认情况下是存储在服务器的数据库中的,在表中会根据sessionid来提取指定的session数据,然后再把这个sessionid放到 ...
- Django中的模型(操作数据库)
目录 Django配置连接数据库 在Django中操作数据库 原生SQL语句操作数据库 ORM模型操作数据库 增删改查 后台管理 使用后台管理数据库 模型是数据唯一而且准确的信息来源.它包含您正在储存 ...
- celery在Django中的集成使用
继上回安装和使用Redis之后,看看如何在Django中使用Celery.Celery是Python开发分布式任务列队的处理库.可以异步分布式地异步处理任务,也可定时执行任务等等.通常我们可以在Dja ...
- django中的跨表查询梳理
1.前言 最近在写一个小项目,里面主要涉及的就是表与表之间复杂的关系.当真正开发起来的时候,才发现自己对复杂的表关系间的查询有点混乱,趁着这几天的时间,重新梳理了一下. 2.概念 在开始之前,先明确几 ...
随机推荐
- Jmeter将JDBC Request查询结果作为下一个接口参数方法
现在有一个需求,从数据库tieba_info表查出rank小于某个值的username和count(*),然后把所有查出来的username和count(*)作为参数值,用于下一个接口. tieba_ ...
- 076 Minimum Window Substring 最小窗口子字符串
给定一个字符串 S 和一个字符串 T,找到 S 中的最小窗口,它将包含复杂度为 O(n) 的 T 中的所有字符.示例:S = "ADOBECODEBANC"T = "AB ...
- MapReduce编程入门实例之WordCount:分别在Eclipse和Hadoop集群上运行
上一篇博文如何在Eclipse下搭建Hadoop开发环境,今天给大家介绍一下如何分别分别在Eclipse和Hadoop集群上运行我们的MapReduce程序! 1. 在Eclipse环境下运行MapR ...
- Hadoop数据管理
本节主要从三方面介绍Hadoop数据管理:分布式文件系统HDFS.分部式数据库HBase和数据仓库工具Hive. 1. HDFS的数据管理 HDFS是分布式计算的存储基石,Hadoop分布式文件系统和 ...
- Golang 入门系列(十三)用Beego开发web应用
接着之前的内容,前面已经讲过很多Golang的基础语法,mysql的使用,redis的使用,也讲了orm框架,如何创建一个webapi 服务等等,感兴趣的可以看看以前的文章,https://www.c ...
- Ubuntu下安装nginx及使用
首先介绍以下nginx.下图来自百科介绍:详细介绍地址:https://baike.baidu.com/item/nginx/3817705?fr=aladdin 在我们平时的开发娱乐中,也许并不会涉 ...
- [WPF自定义控件库]了解如何自定义ItemsControl
1. 前言 对WPF来说ContentControl和ItemsControl是最重要的两个控件. 顾名思义,ItemsControl表示可用于呈现一组Item的控件.大部分时候我们并不需要自定义It ...
- 关于下载文件封装的两个类(Mars)
首先是文件FileUtils.java package mars.utils; import java.io.File; import java.io.FileOutputStream; import ...
- 深入JVM内核---原理,诊断与优化
JVM的概念 JAM是Java Virtual Machine的简称.意为Java虚拟机 虚拟机 指通过软件模拟的具有完整硬件系统功能的,运行在一种完整隔离环境中的完整计算机系统 有哪些虚拟机 - V ...
- JavaScprit30-6 学习笔记
今天学习的是 仿即时搜索诗句效果 第一个问题: fetch() Fetch API 提供了一个 JavaScript接口,用于访问和操纵HTTP管道的部分,例如请求和响应.它还提供了一个全局 fe ...