記錄鍵值資料庫Redis指令筆記,以便後續使用檢視。
redis中文文檔:http://redis.cn/commands.html
目錄
- Redis介紹
-
- nosql概念介紹
- 簡介
- 特性
- 優勢
- 服務端與用戶端指令
-
- 服務端
- 資料操作
-
- String
- 鍵指令
- hash
- list
- set
- zset
- 與Python互動
- 主從小結
-
- 概念
- 簡單配置
Redis介紹
nosql概念介紹
- 泛指非關系型的資料庫
- 不支援SQL文法
- 存儲結構跟傳統關系型資料庫中的那種關系表完全不同,nosql中存儲的資料都是KV形式
- NoSQL的世界中沒有一種通用的語言,每種nosql資料庫都有自己的api和文法,以及擅長的業務場景
- NoSQL中的産品種類相當多:
- Mongodb
- Redis
- Hbase hadoop
- Cassandra hadoop
簡介
Redis是一個開源的使用ANSI C語言編寫、支援網絡、可基于記憶體亦可持久化的日志型、Key-Value資料庫,并提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。
Redis是 NoSQL技術陣營中的一員,它通過多種鍵值資料類型來适應不同場景下的存儲需求,借助一些高層級的接口使用其可以勝任,如緩存、隊列系統的不同角色。
特性
Redis 與其他 key - value 緩存産品有以下三個特點:
- Redis支援資料的持久化,可以将記憶體中的資料儲存在磁盤中,重新開機的 時候可以再次加載進行使用。
- Redis不僅僅支援簡單的key-value類型的資料,同時還提供list,set, zset,hash等資料結構的存儲。
- Redis支援資料的備份,即master-slave模式的資料備份。
優勢
- 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
- 豐富的資料類型 – Redis支援二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料類型操作。
- 原子 – Redis的所有操作都是原子性的,同時Redis還支援對幾個操作全并後的原子性執行。
- 豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性。
服務端與用戶端指令
服務端
這裡使用windows10系統操作redis資料庫;
開啟服務端指令:(若沒有配置環境變量需先cd切換到下載下傳redis的存放目錄下)
- windows:redis-server.exe redis.windows.conf
- linux:redis-server “/…/…/redis.conf” (…代表指定的目錄路徑)
輸入windows伺服器的redis開啟指令,出現以下圖檔情況表示成功。
可以使用help檢視幫助文檔
redis-server help
用戶端指令: redis-cli [-h(指定連接配接redis資料庫ip) -p(指定端口)]
可以使⽤help檢視幫助⽂檔
redis-cli --help
連接配接本地redis資料庫指令:
運作測試指令:ping(若出現PONG則為正常)
切換資料庫,資料庫沒有名稱,預設有16個,通過0-15來辨別,連接配接redis預設選擇第一個資料庫:
select 10
資料操作
String
設定值:
set key value
設定值以及過期時間:
setex key seconds value
設定值以及過期時間:
追加内容:
append key value
擷取鍵的值:
get key
擷取多個值:
鍵指令
檢視所有鍵值對:
删除對應的鍵值對資料:
del key
判斷鍵是否存在:(存在傳回1,反之傳回0)
exists key
判斷類型:
type key
修改過期時間:
expire key seconds
檢視過期時間:
tll key
hash
hash類型:hash⽤于存儲對象,對象的結構為屬性、值(值的類型為string)。注意:哈希hash中的key指的是一個字典的變量值,而field為字典的鍵值(key)
設定單個屬性:
hset key field value
設定多個屬性:
擷取指定鍵所有的屬性:
hkeys 對象名
擷取一個字段的值:
hget key field
擷取多個字段的值:
例:擷取鍵u2屬性’name’、'age的值:
hmget u2 name age
擷取所有屬性的值:
hvals key
删除屬性的值:
hdel key field
list
list類型:
- 清單的元素類型為string
- 按照插入順序排序
在左側插⼊資料: insert(0, item)
lpush key value1 value2
在右側插⼊資料: append(item)
rpush key value1 value2
傳回清單⾥指定範圍内的元素:
- start、stop為元素的下标索引
- 索引從左側開始,第⼀個元素為0
- 索引可以是負數,表示從尾部開始計數,如-1表示最後⼀個元素
lrange key start stop
在指定元素的前或後插⼊新元素:
linsert key before或after 現有元素 新元素
設定指定索引位置的元素值:
- 索引從左側開始,第⼀個元素為0
- 索引可以是負數,表示尾部開始計數,如-1表示最後⼀個元素
lset key index value
删除指定元素:
- 将清單中前count次出現的值為value的元素移除
- count > 0: 從頭往尾移除
- count < 0: 從尾往頭移除
- count = 0: 移除所有
lrem key count value
例子:lrange查詢左右閉區間 []
1:向清單’a2’中加⼊元素’a’、‘b’、‘a’、‘b’、‘a’、‘b’
lpush a2 a b a b a b
2:從’a2’清單右側開始删除2個’b’
lrem a2 -2 b
3:檢視清單’py12’的所有元素(0)
lrange a2 0 -1
set
set類型:說明:對于集合沒有修改操作
- ⽆序集合
- 元素為string類型
- 元素具有唯⼀性,不重複
添加元素:
例1:向鍵’a3’的集合中添加元素’zhangsan’、‘lisi’、‘wangwu’:
sadd a3 zhangsan sili wangwu
傳回所有的元素:
smembers key
例2:擷取鍵’a3’的集合中所有元素
smembers a3
删除元素:
srem key member
例3:删除鍵’a3’的集合中元素’wangwu’
srem a3 wangwu
zset
zset類型:有序的集合(說明:沒有修改操作)
- sorted set,有序集合
- 元素為string類型
- 元素具有唯⼀性,不重複
- 每個元素都會關聯⼀個double類型的score,表示權重,通過權重将元素從⼩到⼤排序
添加元素:
zadd key score1 member1 score2 member2
例1:向鍵’a4’的集合中添加元素’lisi’、‘wangwu’、‘zhaoliu’、‘zhangsan’,權重分别為4、5、6、3
zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan
傳回所有的元素:
- 傳回指定範圍内的元素
- start、stop為元素的下标索引
- 索引從左側開始,第⼀個元素為0
- 索引可以是負數,表示從尾部開始計數,如-1表示最後⼀個元素
zrange key start stop
例2:擷取鍵’a4’的集合中所有元素
zrange a4 0 -1
傳回score值在min和max之間的成員:
zrangebyscore key min max
例3:擷取鍵’a4’的集合中權限值在5和6之間的成員
zrangebyscore a4 5 6
傳回成員member的score值:
zscore key member
例4:擷取鍵’a4’的集合中元素’zhangsan’的權重
zscore a4 zhangsan
删除指定元素:
例5:删除集合’a4’中元素’zhangsan’
zrem a4 zhangsan
删除權重在指定範圍的元素:
zremrangebyscore key min max
例6:删除集合’a4’中權限在5、6之間的元素
zremrangebyscore a4 5 6
與Python互動
安裝redis第三方庫: pip install redis
使用python操作redis資料庫
- 導入子產品
-
建立redis資料庫對象()
decode_responses=True :按照utf8的格式将
類型資料轉換成bytes
字元串
- 執行redis指令
sr.set(key,value)
sr.get(key)
sr.delete(key)
注意:操作redis服務端時的指令與Python操作redis資料庫時的指令大緻相同,唯有服務端中的del删除指令在Python内變成delete即可。
主從小結
概念
master和slave都是一個redis執行個體(redis服務)
- ⼀個master可以擁有多個slave,⼀個slave⼜可以擁有多個slave,如此下去,形成了強⼤的多級伺服器叢集架構
- master用來寫資料,slave用來讀資料,經統計:網站的讀寫比率是10:1
- 通過主從配置可以實作讀寫分離
簡單配置
- 将主機redis的配置檔案影印一份并重命名為:slave.conf(名字可自定義)
- 修改從機的redis配置檔案vi slave.conf
- 編輯内容:
- bind 【主機指定ip】
- 添加:slaveof 【主機指定ip】 6379
- 修改port 6378
- 儲存後,先運作主機redis,後運作從機redis;注意從機 會同時同步主機redis的資料,但是從機不可添加、修改、删除内容
更多筆記内容後續持續更新…