python3實現(xiàn)將json對象存入Redis以及數(shù)據(jù)的導(dǎo)入導(dǎo)出
Redis數(shù)據(jù)類型
String:二進制安全,可以包含任何數(shù)據(jù)
Hash:一個鍵值(key=>value)對集合
List:簡單的字符串列表
Set:string類型的無序集合
Zset:每個元素都會關(guān)聯(lián)一個double類型的分數(shù),redis通過分數(shù)來為集合中的成員進行從小到大的排序
Redis基本命令
Key: set, get, delete
Hash: hmset, hget, hdel
List: lpush, lindex
Set: sadd,smembers
Zset: zadd, zrange
具體用法可查看網(wǎng)上教程或官方文檔或命令行提示
Redis持久化
Redis運行在內(nèi)存中,但它同樣提供了持久化機制
AOF:記錄服務(wù)器執(zhí)行的所有寫操作命令,并在服務(wù)器啟動時,通過重新執(zhí)行這些命令來還原數(shù)據(jù)集
RDB:生成數(shù)據(jù)集的時間點快照
手動讓Redis進行數(shù)據(jù)集保存:save
打開AOF功能:修改配置文件 appendonly yes
Labwork
針對數(shù)據(jù)庫第十次上機作業(yè)進行一些總結(jié)
作業(yè)要求是將以下兩個json對象存入Redis
var someexpert={
id:10000
realname: ‘expert-a'
organization:'BUAA'
}
var frameworks=[
‘vue',
‘react',
‘a(chǎn)ngular'
]
我在儲存過程中全部是以python中的list形式轉(zhuǎn)化為json進行儲存的
初始化
在初始化前,我們首先需要在終端開啟數(shù)據(jù)庫,具體方法可以參考macOS上Redis的安裝與測試
首先我們需要導(dǎo)入redis模塊
import redis # 導(dǎo)入redis模塊,通過python操作redis 也可以直接在redis主機的服務(wù)端操作緩存數(shù)據(jù)庫
直接pip安裝即可
pip3 install redis
接下來就是初始化數(shù)據(jù)庫了,host是redis主機使用localhost即可,需要redis服務(wù)端和客戶端都啟動,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用于實現(xiàn)Redis的命令,StrictRedis用于實現(xiàn)大部分官方的命令,并使用官方的語法和命令,Redis是StrictRedis的子類,用于向后兼容舊版本的redis-py。
redis基本命令
增加list
lpush(name,values)
在name對應(yīng)的list中添加元素,每個新的元素都添加到列表的最左邊,沒有就新建
檢查名字是否存在
exists(name)
檢測redis的name是否存在,存在返回True,否則返回False
刪除
delete(*names)
根據(jù)刪除redis中的任意數(shù)據(jù)類型(string、hash、list、set、有序set)
列表長度
llen(name)
返回列表的長度。如果列表name不存在,則name被解釋為一個空列表,返回0。如果name不是列表類型,返回一個錯誤。
獲取指定列表指定區(qū)間元素
lrange(name, start, end)
返回列表中指定區(qū)間內(nèi)的元素。
區(qū)間以偏移量start和end指定。 其中0表示列表的第一個元素,1表示列表的第二個元素,以此類推;也可以使用負數(shù)下標(biāo),以-1表示列表的最后一個元素,-2表示列表的倒數(shù)第二個元素,以此類推。
參考代碼
# -*- 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')))
輸出結(jié)果

導(dǎo)出rdb
安裝redis-dump
gem install redis-dump -V
redis-dump導(dǎo)出數(shù)據(jù)
redis-dump –u 127.0.0.1:6379 > db.rdb
導(dǎo)出redis 默認數(shù)據(jù)庫的數(shù)據(jù),默認數(shù)據(jù)庫為0,得到的db.rdb文件位于當(dāng)前目錄
如果指定15數(shù)據(jù)庫的數(shù)據(jù):
redis-dump –u 127.0.0.1:6379 –d 15 > db.rdb
導(dǎo)出得到的文件數(shù)據(jù):

redis-load還原數(shù)據(jù)
將db.rdb文件上傳到新的redis服務(wù)器上,進入到db.rdb目錄,執(zhí)行命令
< db.rdb redis-load;
或者
cat db.rdb | redis-load
如果導(dǎo)出時指定了數(shù)據(jù)庫
cat db.rdb | redis-load –d 15
以上這篇python3實現(xiàn)將json對象存入Redis以及數(shù)據(jù)的導(dǎo)入導(dǎo)出就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python strip() 函數(shù)和 split() 函數(shù)的詳解及實例
這篇文章主要介紹了 python strip() 函數(shù)和 split() 函數(shù)的詳解及實例的相關(guān)資料,需要的朋友可以參考下2017-02-02
Python實現(xiàn)數(shù)據(jù)庫表的監(jiān)控警告的項目實踐
本文主要介紹了使用Python 實現(xiàn)對數(shù)據(jù)庫表的監(jiān)控告警功能, 并將告警信息通過釘釘機器人發(fā)送到釘釘群,具有一定的參考價值,感興趣的可以了解一下2024-05-05
Python使用imagehash庫生成ahash算法的示例代碼
aHash、pHash、dHash是常用的圖像相似度識別算法,本文將利用Python中的imagehash庫生成這一算法,從而實現(xiàn)計算圖片相似度,感興趣的可以了解一下2022-11-11
Python利用Beautiful Soup模塊創(chuàng)建對象詳解
這篇文章主要介紹了Python利用Beautiful Soup模塊創(chuàng)建對象的相關(guān)資料,文中介紹的非常詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-03-03

