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
1
2
3
4
5
6
7
8
9
10
11
|
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
1
2
3
4
|
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表示列表的倒數第二個元素,以此類推。
參考代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# -*- 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
以上這篇python3實現將json對象存入Redis以及數據的導入導出就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/angus_monroe/article/details/80635187