python3实现将json对象存入Redis以及数据的导入导出


Posted in Python onJuly 16, 2020

Redis数据类型

String:二进制安全,可以包含任何数据

Hash:一个键值(key=>value)对集合

List:简单的字符串列表

Set:string类型的无序集合

Zset:每个元素都会关联一个double类型的分数,redis通过分数来为集合中的成员进行从小到大的排序

Redis基本命令

Key: set, get, delete

Hash: hmset, hget, hdel

List: lpush, lindex

Set: sadd,smembers

Zset: zadd, zrange

具体用法可查看网上教程或官方文档或命令行提示

Redis持久化

Redis运行在内存中,但它同样提供了持久化机制

AOF:记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集

RDB:生成数据集的时间点快照

手动让Redis进行数据集保存:save

打开AOF功能:修改配置文件 appendonly yes

Labwork

针对数据库第十次上机作业进行一些总结

作业要求是将以下两个json对象存入Redis

var someexpert={
 id:10000
 realname: ‘expert-a'
 organization:'BUAA'
}

var frameworks=[
 ‘vue',
 ‘react',
 ‘angular'
]

我在储存过程中全部是以python中的list形式转化为json进行储存的

初始化

在初始化前,我们首先需要在终端开启数据库,具体方法可以参考macOS上Redis的安装与测试

首先我们需要导入redis模块

import redis # 导入redis模块,通过python操作redis 也可以直接在redis主机的服务端操作缓存数据库

直接pip安装即可

pip3 install redis

接下来就是初始化数据库了,host是redis主机使用localhost即可,需要redis服务端和客户端都启动,redis默认端口是6379

def __init__(self):
  self.host = 'localhost'
  self.port = '6379'
  self.r = redis.StrictRedis(host=self.host, port=self.port)

很多教程上写的是redis.Redis,然而官方是推荐使用redis.StrictRedis的

redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py。

redis基本命令

增加list

lpush(name,values)

在name对应的list中添加元素,每个新的元素都添加到列表的最左边,没有就新建

检查名字是否存在

exists(name)

检测redis的name是否存在,存在返回True,否则返回False

删除

delete(*names)

根据删除redis中的任意数据类型(string、hash、list、set、有序set)

列表长度

llen(name)

返回列表的长度。如果列表name不存在,则name被解释为一个空列表,返回0。如果name不是列表类型,返回一个错误。

获取指定列表指定区间元素

lrange(name, start, end)

返回列表中指定区间内的元素。

区间以偏移量start和end指定。 其中0表示列表的第一个元素,1表示列表的第二个元素,以此类推;也可以使用负数下标,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。

参考代码

# -*- coding=utf-8 -*-
__author__ = 'XJX'
__date__ = '2018.06.09'

"""
description:
 将json对象存入Redis
"""

import json
import redis

class RedisTT(object):
 def __init__(self):
  self.host = 'localhost'
  self.port = '6379'
  self.r = redis.StrictRedis(host=self.host, port=self.port)

 def insertRedis(self, keyName, jsonStr): # 存入到redis中
  self.r.lpush(keyName, jsonStr)

def save1():
 someexpert = {}
 someexpert['id'] = 10000
 someexpert['realname'] = 'expert-a'
 someexpert['organization'] = 'BUAA'
 if RedisTT().r.exists('someexpert'):
  RedisTT().r.delete('someexpert') # 删除key为someexpert的键值对
 RedisTT().insertRedis(keyName='someexpert', jsonStr=json.dumps(someexpert))

def save2():
 frameworks = ['vue', 'react', 'angular']
 if RedisTT().r.exists('frameworks'):
  RedisTT().r.delete('frameworks') # 删除key为frameworks的键值对
 RedisTT().insertRedis(keyName='frameworks', jsonStr=json.dumps(frameworks))

if __name__ == "__main__":
 save1()
 save2()

 print(RedisTT().r.lrange('someexpert', 0, RedisTT().r.llen('someexpert')))
 print(RedisTT().r.lrange('frameworks', 0, RedisTT().r.llen('frameworks')))

输出结果

python3实现将json对象存入Redis以及数据的导入导出

导出rdb

安装redis-dump

gem install redis-dump -V

redis-dump导出数据

redis-dump ?u 127.0.0.1:6379 > db.rdb

导出redis 默认数据库的数据,默认数据库为0,得到的db.rdb文件位于当前目录

如果指定15数据库的数据:

redis-dump ?u 127.0.0.1:6379 ?d 15 > db.rdb

导出得到的文件数据:

python3实现将json对象存入Redis以及数据的导入导出

redis-load还原数据

将db.rdb文件上传到新的redis服务器上,进入到db.rdb目录,执行命令

< db.rdb redis-load;

或者

cat db.rdb | redis-load

如果导出时指定了数据库

cat db.rdb | redis-load ?d 15

以上这篇python3实现将json对象存入Redis以及数据的导入导出就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python选择排序算法的实现代码
Nov 21 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
Apr 11 Python
详细解读tornado协程(coroutine)原理
Jan 15 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
Oct 29 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 Python
Python完成毫秒级抢淘宝大单功能
Jun 06 Python
Python 字符串类型列表转换成真正列表类型过程解析
Aug 26 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
Sep 29 Python
如何基于Python获取图片的物理尺寸
Nov 25 Python
Django中Q查询及Q()对象 F查询及F()对象用法
Jul 09 Python
python3中编码获取网页的实例方法
Nov 16 Python
Python必须了解的35个关键词
Jul 16 #Python
Python子进程subpocess原理及用法解析
Jul 16 #Python
python redis存入字典序列化存储教程
Jul 16 #Python
Python是怎样处理json模块的
Jul 16 #Python
Python2手动安装更新pip过程实例解析
Jul 16 #Python
解决redis与Python交互取出来的是bytes类型的问题
Jul 16 #Python
Python 使用 PyQt5 开发的关机小工具分享
Jul 16 #Python
You might like
php过滤危险html代码
2008/08/18 PHP
Php Cookie的一个使用注意点
2008/11/08 PHP
PHP has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
PHP的几个常用数字判断函数代码
2012/04/24 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
CI框架AR数据库操作常用函数总结
2016/11/21 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
jQuery 使用手册(三)
2009/09/23 Javascript
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
jquery实现的Banner广告收缩效果代码
2015/09/02 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python 的列表遍历删除实现代码
2020/04/12 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
HearthSong官网:儿童户外玩具、儿童益智玩具
2017/10/16 全球购物
安全生产目标责任书
2014/04/14 职场文书
三八妇女节活动总结
2014/05/04 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python
解析Java异步之call future
2021/06/14 Java/Android
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js