1. Redis簡介:
Redis(Remote Dictionary Server 遠程字典服務器 ) C語言撰寫開源的基于記憶體運行并支持持久化高性能的資料庫,能夠存盤資料、管理資料的一種軟體,
2. Redis特點:
支持資料持久化:可以將記憶體中的資料保存在磁盤中,重啟的時候可以再次加載進行使用
支持多種資料結構:Redis不僅僅支持簡單的Key-Value型別的資料,同時還提供list set zset hash等資料結構的存盤,
支持資料備份: master-slave模式的資料備
3. 安裝Redis
下載:https://redis.io
解壓:tar -zxvf
編譯: 先安裝gcc 再執行make編譯 再執行make install
啟動: 前臺啟動:redis-server 后臺啟動: redis-server &
? 啟動redis服務時,指定組態檔:redis-server redis.conf &
關閉: 暴力關閉 : sudo kill -9 PID
? 命令關閉: redis-cli shutdown
4. 使用Redis
redis-cli :是redis自帶客戶端,使用命令redis-cli就可以啟動redis的客戶端程式
redis-cli 默認連接127.0.0.1:6379 上的redis服務
redis-cli -p 埠號: 默認連接127.0.0.1的指定埠上的redis服務
redis-cli -h ip地址 -p 埠: 連接指定ip主機上的指定埠上的redis服務
關閉客戶端:quit exit
5. Redis基礎知識
-
用來測驗redis服務的性能
redis-benchmark -
查看redis服務是否正常運行
ping 如果正常 --pong -
統計redis服務器的統計資訊
info 查看redis服務的所有統計資訊
info [資訊段] 查看redis服務器指定的資訊 如 info Replication -
redis的資料庫實體:默認16個庫 redis中的資料庫實體只能由redis服務來創建和維護,開發人員不能修改和自行創建資料庫實體,默認情況下,redis會自動創建16個資料庫實體,并且給這些資料庫實體進行編號,從0開始一直到15 ,使用時通過編號來使用資料庫,可以通過組態檔,指定redis自動創建的資料庫個數,redis的每一個資料庫實體本身占用的存盤空間是很少的,所以也不造成存盤空間的太多浪費,
默認情況下,redis客戶端連接的是編號是0的資料庫實體:可以使用select index 來切換資料庫 -
查看當前資料庫實體,資料的條數
dbsize -
查看當前資料庫實體中所有的key
keys * -
清空資料庫實體
flushdb
-清空所有資料庫實體資料
flushall -
查看redis中配置資訊:
config get * 查看redis所有的配置資訊 -
查看redis中的指定的配置資訊
config get port
6.Redis五種資料結構
程式是用來資料的,Redis是用來存盤資料的,程式處理完的資料要存盤到redis中,不同特點的資料要存盤在redis中不同型別的資料結構中,
字串 單key:單value
list串列:單key:多value 有序
set集合:單key:多無序value
hash:單key: 物件(屬性:值)
zset: 單key: 多個有序value;
7.Redis中的操作命令:
7.1 關于key的操作命令:


7.2 redis中有關string型別資料的操作命令
1.將字串型別的資料保存在redis : set key value
2.從redis中獲取字串型別的資料:get key
3.追加字串:
append key value 回傳追加之后字串長度 如果key不存在,則新創建一個key,并且把value值設定為value
-
獲取字串資料的長度:strlen key
-
將字串數值進行加1運算,incr key 回傳加1運算之后的資料,如果key不存在,首先設定一個Key 值初始化為0 然后進行incr運算,要求key所表示value必須是數值,否則,報錯,
6.將字串數值進行減1運算:decr key 回傳減1運算之后的資料,如果key不存在,首先設定一個Key 值初始化為0 然后進行decr運算,要求key所表示value必須是數值,否則,報錯,
7.將字串數值進行加offset運算: incrby key offset 回傳加offset運算之后的資料,如果key不存在,首先設定一個Key 值初始化為0 然后進行incrby運算,要求key所表示value必須是數值,否則,報錯
-
將字串數值進行減offset運算: decrby key offset 回傳加offset運算之后的資料,如果key不存在,首先設定一個Key 值初始化為0 然后進行decrby運算,要求key所表示value必須是數值,否則,報錯
-
獲取字串中的子字串: getrange key startIndex endIndex
- 修改字串中的子字串 setrange key startIndex endIndex
-
設定字串資料的同時,設定它最大生命周期 setex key seconds value
-
設定string型別的資料value 到redis資料庫中,當key不存在時設定成功,否則,則放棄設定: setnx key value
-
批量將string型別的資料設定到redis中,mset 鍵1 值 1 鍵2 值2 …
-
批量從redis中虎丘string型別的資料: mget 鍵1 鍵2 鍵3…
-
批量設定String型別的資料value 到 redis資料庫中,當所有key都不存在時設定成功,否則,則全部放棄設定,msetnx 鍵1
7.3 redis中有關list型別資料的操作命令
單key 多順序value 一個key對應多個value;多個value之間有順序,最左側是表頭,最右側是表尾,每一個元素都有下標,表頭元素的下標是0,依次往后順序,最后一個元素下標是串列長度-1
每一個元素的下標又可以用負數表示,負下標表示從表尾運算,最后一個元素下標用-1 表示
a) 將一個或者多個值依次插入到串列的表頭(左側):lpush key v1 v2 v3
b) 獲取指定串列中指定下標區間的元素: lrange key startIndex endIndex
c) 將一個或多個值依次插入到串列的表尾(右側):rpush key v1 v2 v3
d)從指定串列中移除并且回傳表頭元素 lpop key
e) 從指定串列中移除并且回傳表尾元素 rpop key
f) 獲取串列中指定下標的元素: lindex key index
g) 獲取指定串列的長度: llen key
h) 根據count值移除指定串列中某一些資料: lrem key count value count>0 從串列的左側移除count個跟value相等的資料,count<0 從串列的右側移除count個跟value相等的資料 count=0 從串列中移除所有跟value相當的資料
7.4 redis中有關set型別資料的操作命令:
單key-多無序value
一個key對應多個value value之間沒有順序,并且不能重復
- 將一個或多個資料添加到集合中:sadd key v1 v2 v3
如果元素已經存在,則會忽略,回傳成功加入元素的個數
- 獲取指定集合中所有的元素 :smembers key
3)判斷元素在集合中是否存在: sismember key member
存在回傳1 不存在回傳0
4)獲取指定集合的長度: scard key
- 移除指定集合中一個或者多個元素 srem key 值 值 值 … 回傳成功移除的個數
6) 隨機獲取集合中的一個或者多個元素: srandmember key [count] count>0 隨機獲取的多個元素不能重復 count<0 隨機獲取的多個元素之間可能重復
7) 隨機移除集合中的一個或多個元素: spop key [count]
- 將指定集合中的元素移動到另一個元素 smove source dest member
? smove set01 set02 a
- s獲取第一個集合中有、但是其它集合中都沒有的元素組成的新集合 diff key key1 key2 key3…
10) 獲取所有指定集合中都有的元素組成的新集合: sinter key key key key
? sinter set01 set02 set03 …
- 獲取所有指定集合中所有元素組成的大集合 : sunion key key key key
7.5 redis 中有關hash型別資料的操作命令:
單key : field -value studentzs : id-10 mame-zhangsan age -20
-
將一個或多個field-value 對設定到哈希表中: hset key filed1 value1 filed2 value2 … 如果key field已經存在,把value 會把以前的值覆寫掉
-
獲取指定哈希表中指定filed的值 hget key field
-
批量將多個field-value 對設定到哈希表中: hmset key field1 value1 …
-
批量獲取指定哈希表中的field的值: hmget key field1 …
-
獲取指定哈希表中所有的field和value hgetall key
-
從指定哈希表中洗掉一個或多個field: hdel key field1 field2…
-
獲取指定哈希表中所有field的個數: hlen key \
-
判斷指定哈希表中是否存在某一個field : hexists key field
-
獲取指定哈希表中多有的field串列: hkeys key
-
獲取指定哈希表中多有value 串列: hvals key
-
對指定哈希表中指定的field值進行整數加法運算: hincrby key field int
12) 對指定哈希表中指定field值進行浮點數加法運算: hincrbyfloat key field float
- hsetnx key field value 將一個field-value對 設定到哈希表中,當key-field已經存在時,則放棄設定,否則,設定field-value
7.6 redis 中有關zset型別資料的操作命令
有序集合,本質上是集合,所有元素不能重復; 每一個元素都關聯一個分數 ,redis會根據分數對元素進行自動排序,分數可以重復,既然有序集合中每一個元素都有順序,那么也都有下標,有序集合中元素的排序規則又跟串列中元素的排序規則不一樣,
1) 將一個或者多個member及其score值加入有序集合: zadd key score member score member 如果元素已經存在,則把分數覆寫
-
獲取指定有序集合中指定下標區間的元素: zrange key startIndex endIndex
-
根據分數區間閉區間獲取元素: zrangebyscore key min max
-
洗掉指定有序集合中一個或者多個元素: zrem key member member member
-
獲取指定有序集合中所有元素的個數: zcard key
6)獲取指定有序集合中指定元素的排名: zrank key member 排名從0開始
7) 獲取指定有序集合中指定元素的個位 zcount key min max
8) 獲取指定有序集合中指定元素的分數: zscore key member
- 獲取指定有序集合中指定元素的排名(按照分數從大到小的排名): zrevrank key member
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287130.html
標籤:其他
上一篇:小白學了這篇日志原理分析完全指南為公司創造了營收,直接升了總監!
下一篇:Linux網路管理,NAT網路配置,修改主機名稱,主機映射,防火墻,系統啟動級別,用戶和用戶組,為用戶配置sudoer權限,檔案權限管理,打包和壓縮
