python学习笔记(十六)python操作redis数据库
Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。 Redis特点
Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。以设置和获取一个256字节字符串为例,它的读取速度可高达110000次/s,写速度高达81000次/s。
Redis跟memcache不同的是,储存在Redis中的数据是持久化的,断电或重启后,数据也不会丢失。因为Redis的存储分为内存存储、磁盘存储和log文件三部分,重启后,Redis可以从磁盘重新将数据加载到内存中,这些可以通过配置文件对其进行配置,正因为这样,Redis才能实现持久化。
Redis支持主从模式,可以配置集群,这样更利于支撑起大型的项目,这也是Redis的一大亮点。
redis的操作
import redis
#r=redis.Redis(host='211.149.218.16',port=6379,password='123456',db=2)#连接redis r=redis.Redis(host='localhost',port=6379,db=2)#连接本地redis数据库
r.set('hqg_session','')
print(r.get('hqg_session'))#b'2018012116'
print(r.get('hqg_session').decode())#2018012116 redis里面取出来的数据都是bytes类型的,所以要用decode方法转成字符串 r.set('qaz','qwe')
r.set('wsx','哈哈哈')
r.delete('qaz')#删除
print(r.get('qaz'))#None r.setex('edc','hahahh','')#可以指定key的失效时间,单位是秒
hash类型:
r.hset('230_session','qew','')#hash类型插入数据
r.hset('230_session','asd','')
r.hset('230_session','zxc','')
上三行代码的结果为:

r.hset('230_session','qew','')#hash类型插入数据
r.hset('230_session','asd','')
r.hset('230_session','zxc','')
print(r.hget('230_session','qew'))#b'123'
print(r.hget('230_session','qew').decode())#
print(r.hgetall('230_session'))#{b'zxc': b'12345', b'qew': b'123', b'asd': b'1234'}
redis_data=r.hgetall('230_session')
all_data={}
for k,v in redis_data.items():
k=k.decode()
v=v.decode()
all_data[k]=v
print(redis_data)#{b'qew': b'123', b'zxc': b'12345', b'asd': b'1234'}
print(all_data)#{'qew': '123', 'zxc': '12345', 'asd': '1234'}
#hash类型没有过期时间
# r.set('try:homework:er','白')
# r.set('try:homework:ty','黑') # print(r.keys())#获取所有的key [b'wsx', b'230_session', b'hqg_session']
# print(r.keys('txz*'))#以txz开头的key
# print(r.type('txz:xj'))#获取key的类型
# print(r.type('sessions'))
将redis连接封装成函数
def op_redis(host,passwd,k,v,port=6379,db=0):
r=redis.Redis(host=host,passwd=passwd,port=port,db=db)
if v:
r.set(k,v)
res='ok'
else:
res=r.get(k)
if res:#这里是判断有没有get到数据
res.decode()
else:
res=None
return res
redis数据迁移小程序:
import redis src_redis = redis.Redis(host='211.149.218.16',port=6379,password='',db=2)#连上redis
target_redis = redis.Redis(host='211.149.218.16',port=6379,password='',db=14)#连上redis
for key in src_redis.keys():
if src_redis.type(key) == b'string': #判断key的类型,因为redis数据取出来都是二进制的,所以这里也用bytes
v = src_redis.get(key) #先获取到原来的数据
target_redis.set(key,v) #再set到新的里面
else:
all_hash_data = src_redis.hgetall(key) #先获取到hash类型里面所有的数据
for k,v in all_hash_data.items(): #因为hash类型的获取到之后是一个字典,所以这里循环字典
target_redis.hset(key,k,v) #key是外面的大key,k是里面的小k,v就是小k对应的value
python学习笔记(十六)python操作redis数据库的更多相关文章
- python学习笔记(十六)-Python多线程多进程
一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...
- python 学习笔记十六 django深入学习一 路由系统,模板,admin,数据库操作
django 请求流程图 django 路由系统 在django中我们可以通过定义urls,让不同的url路由到不同的处理函数 from . import views urlpatterns = [ ...
- python学习笔记(十)、文件操作
在前面我们了解到了没得模块,其中有一个模块为fileinput,为文件操作模块,不知道小伙伴们是否还记得? 1 打开文件 要打开文件,可以使用fileinput中的fileinput.input函数进 ...
- python学习笔记(十 二)、操作数据库
每一种语言都少不了多数据库进行各种操作. python支持多种数据库.有关python支持的数据库清单,请参阅:https://wiki.python.org/moin/DatabaseInterfa ...
- python学习笔记十六:读取JSON文件
读取JSON文件可以用JSON库,示例代码: #coding:utf-8 import json with open("msg.json") as jsonfile: json_d ...
- python学习笔记(十四)python实现发邮件
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart u ...
- Python学习笔记(六)
Python学习笔记(六) Ubuntu重置root密码 Ubuntu 16.4 目录结构 Ubuntu 命令讲解 1. Ubuntu重置root密码 启动系统,显示GRUB选择菜单(如果默认系统启动 ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...
- python3.4学习笔记(十六) windows下面安装easy_install和pip教程
python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...
随机推荐
- python-笔记(二)数据类型
一.数据类型是什么鬼? 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同 ...
- 用python进行月份加减的函数
import math def add_month(datamonth, num): """ 月份加减函数,返回字符串类型 :param datamonth: 时间(20 ...
- HslControls
HslControls控件库的使用demo,HslControls是一个工业物联网的控件库,基于C#开发,配套HslCommunication组件可以实现工业上位机软件的快速开发,支持常用的工业图形化 ...
- DataGridView数值列和日期列
本文转自:http://www.cnblogs.com/conexpress/p/5923324.html 在使用DataGridView编辑数据的时候,编辑的单元格一般会显示为文本框,逻辑值和图片会 ...
- BootStrap前端框架
BootStrap前端框架 Bootstrap 教程:http://www.runoob.com/bootstrap/bootstrap-tutorial.html BpptStrap操作手册:htt ...
- Java基础/阿里巴巴Java开发手册
阿里巴巴Java开发手册 序号 文档名及下载地址 1 阿里巴巴Java开发手册v1.2.0 2 <阿里巴巴Java开发手册>(终极版) 为什么阿里巴巴禁止工程师直接使用日志系统(Log4j ...
- <编译原理 - 函数绘图语言解释器(3)解释器 - python>
<编译原理 - 函数绘图语言解释器(3)解释器 - python> <编译原理 - 函数绘图语言解释器(2)词法分析器 - python> <编译原理 - 函数绘图语言解 ...
- Vue ----》 如何实现 sessionStorage 的监听,实现数据响应式
在开发过程中,组件中的随时可能改变的数据有的是缓存到sessionStorage里面的,但是有些组件取seesionStorage中的值时,并不能取到更新后的值. 接下来就说一下,当seesionSt ...
- maven build失败 (Failure to find io.renren:renren-security:pom:3.2.0 in http://maven.aliyun.com/nexus/content/groups/public/ was cached in the local repository...)
今天mvn clean package一个子工程(renren-admin)时报错: Failed to execute goal on project renren-admin: Could n ...
- (Git 学习)一个账户怎么创建多个ssh key
(Git 学习)一个账户怎么创建多个ssh key:1.https://segmentfault.com/a/1190000009572470?_ea=1985120 2.https://www.ji ...