Redis支持的鍵值資料型別如下:
- 字串型別
- 散列型別
- 串列型別
- 集合型別
- 有序集合型別
一、字串型別
字串型別是Redis中最基本的資料型別,它能存盤任何形式的字串,包括二進制資料,一個字串型別鍵允許存盤的資料最大容量是512MB.
1、字串常用命令
1.1 賦值與取值
SET key value
GET key
示例如下:

?
提示:Redis對于鍵的命名沒有強制要求,但比較好的實踐使用"物件型別:物件ID:物件屬性"來命名,對于多個單詞則推薦使用“.”分隔.
1.2 數字遞增
INCR key
當存盤的字串是整數形式時,可通過INCR命令讓當前鍵值遞增,并回傳遞增后的值,示例如下:

?
INCRBY key increment
INCRBY命令與INCR命令基本一樣,前者可以通過increment引數指定增加的數值,示例如下:

?
1.3 數字遞減
DECR key
DECRBY key decrement
DECR命令是讓當前鍵值遞減,DECREBY命令可指定減少的數值,與INCRBY命令用法相同,示例如下:

?
1.4 增加指定浮點數
INCRBYFLOAT key increment
INCRBYFLOAT命令用于遞增一個雙精度浮點數,示例如下:

?
1.5 向尾部追加值
APPEND key value
APPEND作用是向鍵值的末尾追加value值,如果鍵不存在則將改鍵的值設定為value,回傳值是追加字串后的總長度,示例:

?
1.6 獲取字串長度
STRLEN key
STRLEN命令回傳鍵值的長度,如果鍵不存在則回傳0,示例:

?
1.7 同時獲取/設定多個鍵值
MGET key [key...]
MSET key value [key value...]
可以分別使用MGET和MSET命令獲取或者設定多個鍵的鍵值,示例:

?
二、散列型別
散列型別的鍵值是一種字典結構,其存盤了欄位(field)和欄位值的映射,但欄位值只能是字串,不支持其他資料型別,散列型別適合存盤物件:使用物件類別和ID構成鍵名,使用欄位表示物件的屬性,欄位值則存盤屬性值,例如要存盤ID為2的汽車物件,可以設定鍵為car:2,鍵值為name:"奧迪",其中鍵值中"name"為欄位,"奧迪"為欄位值,
1、散列常用命令
1.1 賦值與取值
HSET key field value
HGET key field
這兩個命令分別用來給欄位賦值和獲得欄位的值,HSET命令不區分是對欄位的插入還是更新操作,當欄位不存在時為插入操作,當欄位存在時為更新操作,示例如下:
?
提示:在Redis中每個鍵都屬于一個明確的資料型別,如通過HSET命令建立的鍵是散列型別,通過SET命令建立的鍵是字串型別等,使用一個資料型別的命令操作另一種資料型別的鍵會提示錯誤:(error) WRONGTYPE Operation against a key holding the wrong kind of value,但也不是所有命令都是如此,如SET命令可以覆寫已經存在的鍵,不論鍵原來是什么型別,
HMSET key field value [field value ...]
HMGET key field [field ...]
當需要同時設定或獲取多個欄位的值時,可以使用HMSET/HMGET命令,示例如下:

?
HGETALL key
HGETALL命令可以獲取鍵中的所有欄位和欄位值,示例如下:

?
1.2 判斷欄位是否存在
HEXISTS key field
HEXISTS命令用來判斷一個欄位是否存在,存在則回傳1,否則回傳0,示例如下:

1.3 當欄位不存在時賦值
HSETNX key field value
如果欄位已經存在,HSETNX命令將不執行任何操作,示例如下:

1.4 增加數字
HINCRBY key field increment
HINCRBY命令可使欄位增加指定的整數,示例如下:

1.5 洗掉欄位
HDEL key field [field ...]
HDEL命令可以洗掉一個或多個欄位,回傳值是被洗掉的欄位個數,示例如下:

1.6 只獲取欄位名或欄位值
HKEYS key
HVALS key

1.7 獲取欄位數量
HLEN key

三、 串列型別
串列型別可以存盤一個有序的字串串列,常用的操作是向串列兩端添加元素,或者獲得串列的某一個片段,串列型別內部是使用雙向鏈表實作的,所以向串列兩端添加元素的時間復雜度為O(1),獲取越接近兩端的元素速度越快,
1、串列常用命令
1.1 向串列兩端增加元素
LPUSH key value [value ... ]
RPUSH key value [value ... ]
LPUSH命令和RPUSH命令分別用來向串列左邊和右邊增加元素,回傳值表示增加元素后的串列長度,示例如下:

1.2 從串列兩端彈出元素
LPOP key
RPOP key
LPOP命令可以從串列的左邊彈出一個元素,LPOP命令執行步驟:第一步是將串列左邊的元素從串列中移除,第二步是回傳被移除的元素值,RPOP命令類似,示例如下:

1.3 獲取串列中元素的個數
LLEN key
當鍵不存在時LLEN會回傳0,示例如下:

1.4 獲取串列片段
LRANGE key start stop
LRANGE命令能夠獲取串列中的某一片段,回傳索引從start到stop之間的所有元素(包括兩端的元素),Redis的串列起始索引為0,

LRANGE命令也支持負索引,表示從右邊開始取數,如"-1"表示最右邊第一個元素,依次類推,

注意兩種特殊情況:
(1)如果start的索引位置比stop的索引位置靠后,則會回傳空串列
(2)如果stop大于實際的索引范圍,則會回傳到串列最右邊的元素

1.5 洗掉串列中指定的值
LREM key count value
LREM命令會洗掉串列中前count個值為value的元素,回傳值是實際洗掉的元素個數,根據count值的不同,LREM命令的執行方式會有差異:
(1)當count>0時LREM命令會從串列左邊開始洗掉前count個值為value的元素;
(2)當count<0時LREM命令會從串列右邊開始洗掉前|count|個值為value的元素;
(3)當count=0時LREM命令會洗掉所有為value的元素,

1.6 獲取/設定指定索引的元素值
LINDEX key index
LSET key index value
LINDEX命令用來回傳指定索引的元素,索引從0開始

如果index是負數則表示從右邊開始計算的索引,最右邊元素的索引為-1

LSET命令是為指定索引設定值

1.7 只保留串列指定片段
LTRIM key start end
LTRIM命令可以洗掉指定索引范圍之外的所有元素,示例:

1.8 向串列中插入元素
LINSERT key BEFORE|AFTER pivot value
LINSERT命令首先會在串列中從左到右查找值為pivot的元素,然后根據第二個引數是BEFORE還是AFTER來決定value插入到該元素的前面還是后面,回傳值是插入后串列的元素個數

1.9 將元素從一個串列轉到另一個串列中
RPOPLPUSH source destination
RPOPLPUSH命令會先從source串列的右邊彈出一個元素,然后將其加入到destination串列的左邊,并回傳這個元素的值,整個程序是原子的,
當把串列型別作為佇列使用時,RPOPLPUSH命令可以很直觀地在多個佇列中傳遞資料,當source和destination相同時,RPOPLPUSH命令會不斷地將隊尾地元素移到隊首,
四、集合型別
集合中的每個元素都是唯一的,且沒有順序,集合型別的常用操作是向集合中加入或洗掉元素、判斷某個元素是否存在等,且多個集合之間還可以進行并集、交集和差集運算,
1、集合常用命令
1.1 增加/洗掉元素
SADD key member [member ... ]
SREM key member [member ... ]
SADD命令用來向集合中增加一個或多個元素,如果鍵不存在則會自動創建,因為集合中的元素是唯一的,如果要加入的元素已經存在于集合中就會忽略這個元素,回傳值是成功加入的元素數量,

SREM命令用來從集合中洗掉一個或多個元素,并回傳成功洗掉的元素個數,

1.2 獲取集合中的所有元素
SMEMBERS key
SMEMBERS命令會回傳集合中的所有元素,示例如下:

1.3 判斷元素是否存在集合中
SISMEMBER key member

1.4 集合間運算
SDIFF key [key ... ]
SDIFF命令用來對多個集合執行差集運算,集合A與集合B的差集表示為A-B,代表所有屬于A且不屬于B的元素構成的集合,示例如下:

SDIFF命令還支持同時傳入多個鍵

SINTER key [key ... ]
SINTER命令用來對多個集合執行交集運算,

SUNION key [key ... ]
SUNION命令用來對多個集合執行并集運算,

1.5 獲取集合中元素個數
SCARD key
SCARD命令用來獲取集合中的元素個數,

1.6 進行集合運算并將結果存盤
SDIFFSTORE destination key [key .... ]
SINTERSTORE destination key [key ... ]
SUNIONSTORE destination key [key ... ]
SDIFFSTORE命令和SDIFF命令類似,區別在于SIDFFSTORE命令不會直接回傳運算結果,而是將結果存盤在destination鍵中,常用于需要進行多步集合運算的場景中,如需要先計算差集再將結果和其他鍵計算交集等,

1.7 隨機獲取集合中的元素
SRANDMEMBER key [count]
SRANDMEMBER命令用來隨機從集合中獲取一個元素,如:

還可以根據count引數來一次隨機獲取count個元素,根據count的正負不同,表現不同,
(1)當count為正數時,SRANDMEMBER會隨機從集合中獲取count個不重復的元素,如果count的值大于集合中的元素個數,則回傳集合中的所有元素

(2)當count為負數時,SRANDMEMBER會隨機從集合中獲取|count|個元素,元素有可能相同,

1.8 從集合中彈出一個元素
SPOP key
SPOP命令會從集合中隨機選擇一個元素彈出,

五、有序集合型別
1、介紹
在集合的基礎上,有序集合型別為集合中的每個元素都關聯了一個分數,使得我們不僅可以完成插入、洗掉元素和判斷元素是否存在等型別的操作,還能夠獲得分數最高的前N個元素、獲得指定分數范圍內的元素等與分數有關的操作,
2、有序集合與串列的區別
(1)串列型別是通過鏈表實作的,獲取靠近兩端的資料速度較快,而當元素增多后,訪問中間資料的速度會較慢,所以更適合實作如“新鮮事”、“日志”這樣很少訪問中間元素的應用,
(2)有序集合型別是使用散串列和跳躍表實作的,所以即使讀取位于中間部分的資料速度也很快,
提示:散串列(Hash table,也叫哈希表),是根據關鍵碼值(Key value)而直接進行訪問的資料結構,也就是說,它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度,
(3)串列中不能簡單地調整某個元素的位置,有序集合可通過更改元素的分數進行調整,
(4)有序集合比串列型別更耗費記憶體,
3、有序集合常用命令
3.1 增加元素
ZADD key score member [score member ... ]
ZADD命令用來向有序集合中加入一個元素和該元素的分數,如果元素已經存在,則會用新的分數替換原來的分數,回傳值是加入到集合中的元素個數,

3.2 獲取元素的分數
ZSCORE key member

3.3 獲取排名在某個范圍內的元素串列
ZRANGE key start stop [WITHSCORES]
ZREVRANGE key start stop [WITHSCORES]
ZRANGE命令會按照元素分數從小到大回傳索引從start到stop之間的所有元素(包含兩端的元素,同時支持負數索引),

如果需要在獲取元素的同時獲得元素的分數,可在ZRANGE命令后加上WITHSCORES引數,

如果兩個元素的分數相同,Redis會按照欄位順序進行排序("0"<"9"<"A"<"Z"<"a"<"z")
3.4 獲取指定分數范圍的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
ZRANGEBYSCORE命令按照元素分數從小到大的順序回傳分數在min和max之間的元素(包含min和max),

如果希望分數范圍不包含端點值,可以在分數前加上"("符號,示例如下:

[LIMIT offset count]引數的作用:在獲取的元素串列的基礎上向后偏移offset個元素,并且只獲取前count個元素,

3.5 增加某個元素的分數
ZINCRBY key increment member
ZINCRBY命令可以增加一個元素的分數,回傳值是更改后的分數,如果指定元素不存在,Redis在執行命令前會先建立它并將它的分數賦值為0再執行操作,

3.6 獲取集合中元素的數量
ZCARD key

3.7 獲取指定分數范圍內的元素個數
ZCOUNT key min max

3.8 洗掉一個或多個元素
ZREM key member [member ... ]

3.9 按照排名范圍洗掉元素
ZREMRANGEBYRANK key start stop
ZREMRANGEBYRANK命令按照元素分數從小到大的順序洗掉處在指定排名范圍內的所有元素,并回傳洗掉的元素數量,

3.10 按照分數范圍洗掉元素
ZREMRANGEBYSCORE key min max

3.11 獲取元素的排名
ZRANK key member
ZREVRANK key member
ZRANK命令會按照元素分數從小到大的順序獲得指定的元素排名(分數最小的元素排名為0),ZREVRANK命令與之相反(分數最大的元素排名為0),

3.12 計算有序集合的交集
ZINTERSTORE destination numkeys key [key ... ] [WEIGHTS weight [weight ... ]] [AGGREGATE SUM|MIN|MAX]
ZINTERSTORE命令用來計算多個有序集合的交集并將結果存在destination鍵中,回傳值為destination鍵中的元素個數,destination鍵中的分數是由AGGREAGTE引數決定的,
(1)當AGGREGATE是SUM時,destination鍵中元素的分數是每個參與計算的集合中的該元素分數的和,默認為SUM,

(2)當AGGREGATE是MIN時,destination鍵中元素的分數是每個參與計算的集合中的該元素分數的最小值,

(3)當AGGREGATE是MAX時,destination鍵中元素的分數是每個參與計算的集合中的該元素分數的最大值,

ZINTERSTORE命令還能夠通過WEIGHTS引數設定每個集合的權重,每個集合在參與計算時元素的分數被乘上該集合的權重,

ZUNINONSTORE命令用于計算集合的并集,與ZINTERSTORE命令類似,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/4112.html
標籤:其它
上一篇:mongoDB4.0資料庫
