python3实现将json对象存入Redis以及数据的导入导出
作者:angus_monroe 发布时间:2022-05-05 16:31:27
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')))
输出结果
导出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
导出得到的文件数据:
redis-load还原数据
将db.rdb文件上传到新的redis服务器上,进入到db.rdb目录,执行命令
< db.rdb redis-load;
或者
cat db.rdb | redis-load
如果导出时指定了数据库
cat db.rdb | redis-load –d 15
来源:https://blog.csdn.net/angus_monroe/article/details/80635187


猜你喜欢
- 先使用 Ms Access 压缩修复,然后再去相关的表把备注类型的字段里的“索引”去掉 备注型字段为什么不能超过1950字节?是由于备注型字
- 问题:之前在学习list和dict相关的知识时,遇到了一个常见的问题:如何在遍历list或dict的时候正常删除?例如我们在遍历dict的时
- JavaScript 语法约定1、大小写的区分1). JavaScript的关键字,永远都是小写的;2). 内置对象,如Math和Date是
- 1. ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制
- 一、数据可视化1.pyecharts介绍官方网址:https://pyecharts.org/#/zh-cn/intro📣 概况:Echar
- 前情提要上文我们分析了挂载组件主要调用了三个函数: createComponentInstance(创建组件实例)、setupCompone
- 本文实例讲述了Python基于回溯法子集树模板解决旅行商问题(TSP)。分享给大家供大家参考,具体如下:问题旅行商问题(Traveling
- 1、pd.cut函数有7个参数,主要用于对数据从最大值到最小值进行等距划分 pandas.cut(x, bins,&nb
- 日期时间转字符串Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
- 很多查询类的存储过程会返回一个表结构的结果集,如果在其他存储过程中需要用到这个结果集,为了避免编写重复的sql脚本,可以直接使用前者的查询结
- 有这样一个经历,服务器挂掉了,请工程师维护,为了安全,工程师进行核心操作时,直接关掉显示器进行操作,完成后,再打开显示器,进行收尾工作...
- 1.介绍Go官方提供了database包,database包下有sql/driver。该包用来定义操作数据库的接口,这保证了无论使用哪种数据
- 今天的主题!最近很多朋友问起pyecharts,尤其是地理坐标图的制作,都说被其图形之美给吸引到了。刚好今天也有同事问起来,那么今天就以py
- 安装cuda更新nvidia驱动打开GeForce Game Ready Driver或在GeForce Experience中下载符合自己
- 下面通过三种方法给大家介绍Pycharm2020.1安装中文语言插件的方法,大家可以参考下:方法一(在搜索不到插件):1.安装好Pychar
- 一直在学习系统托盘的实现,于是自己写了一个简单的系统托盘实例,右键包括演示、最大化、最小化、退出和关于。在python2.6下测试通过。注意
- 【目标需求】查看某一个字符串是否为中文字符串【解决办法】def check_contain_chinese(check_str): for
- 使用字符串创建矩阵是一个很实用的功能,之前自己尝试了很多次的小功能使用这个方法就能够简单实现。创建长度为16的字符串,是为了方便能够在各种数
- 本文实例为大家分享了bootstrapValidator.min.js表单验证的具体代码,供大家参考,具体内容如 * 意:下载后全选复制并粘贴
- 这篇文章主要介绍了基于Python实现扑克牌面试题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可