Redis資料結構&命令手冊

發表於2019-05-26

 

Redis資料結構&命令手冊

 

 

Redis資料結構

  Redis可以儲存鍵與5種不同資料結構之間的對映,這五種資料結構型別分別為STRING(字串)、LIST(列表)、SET(集合)、HASH(雜湊)、ZSET(有序集合)。

  

 

STRING字串

LIST列表

SET集合

HASH雜湊

Order-set有序集合

 

STRING字串

1.set

set key value [ex 秒數]/[px 毫秒數] [nx]/[xx]
作用:建立string型別資料型別鍵值對 例子: Set a
1 ex 10:10秒有效 Set a 1 px 9000:9秒有效 注:ex,px不要同時寫,否則以後面的有效期為準 Set a 1 ex 10 px 9000:實際有效期為9秒 nx:表示key不存在時,執行操作 Xx:表示key存在時,執行操作

2.mset

mset multi set :一次性設定多個鍵值
作用:一次設定多個鍵值對 例子:mset key1 v1 key2 v2...

3.get

get key
作用獲取單個key的值

4.mget

mget key1 key2 ...
作用獲取多個key的值

5.append

append key value
作用:把value追加到key的原值上

6.setrange

setrange key offset value
作用把字串的offset偏移位元組改成value(替換)
set word hello get word hello setrange word 2 ?? get word he??o 注意:如果偏移量》字元長度,該字元自動補0x00 set word hello setrange word 6get word hello\x00!

7.getrange

getrange key start stop
作用:獲取字串中【start,sop】範圍的值
注意:對於字串的下標,左數從0開始,右數從-1開始

set area chinese
getrange area 1 4
hine
getrange area 0 -3
Chine
注意:
1.start>=length,則返回空字串
2.stop>=length,則擷取至字元結尾
3.如果start所處位置在stop右邊,返回空字串

8.getset

getset key newvalue
作用:獲取並返回舊值,設定新值
set status sleep
getset status wakeup
Sleep
get status
wakeup
getset status working

9.incr 

incr key 
作用:增加key的大小,增加1

10.decr

decr key 
作用:減少key的大小,減少1

11.decrby

decrby key value
作用:減少key的大小,減少value

12.incrby

incrby key value
作用:增加key的大小,增加value

13.incrbyfloat&decrbyfloat

incrbyfloat key value
作用:增加key的大小,增加value,value為float型別

14.setbit

setbit key offset value
設定offset對應二進位制位上的值
返回:該位上的舊值
注意:如果offset過大,則會在中間填充0
Offset最大為2^32-1,可以推算出字串的值最大為512M

set char A
setbit char  2 1
get char
a

set char a
setbit char  2 0
get char
A

15.bitop

bitop operation destkey key1 [key2 ...]
作用:對key1,key2、keyN左operation,並將結果儲存到destkey上
operation可以是AND、OR、NOT、XOR

 

LIST列表

  Redis對連結串列(linked-list)結構的支援使得它在鍵值儲存的世界中獨樹一幟。一個列表可以有序地儲存多個字串。

1.lpush

lpush key value
作用:在連結串列頭部插入資料 lpush character a

2.rpush

rpush key value
作用:在尾部插入資料 rpush character b

3.lpop&rpop

lpop key
作用:返回並刪除連結串列頭的元素 rpop key
作用:返回並刪除連結串列尾的元素

4.lrange

lrange key start stop
作用:返回連結串列中【start stop】的元素 注:左數從0開始,右數從
-1開始
例子: lrange character
1 3

5.lrem

lrem key count value:從key連結串列中刪除value值
注:刪除count的絕對值個value後結束
Count>0 從表頭刪除
Count<0 從表尾刪除
lrem key 2 a:從頭開始刪除兩個a
lrem key -2 a:從尾開始刪除兩個a

6.ltrim

ltrim key start stop
作用:剪下key對應的連結剪下【start,stop】一段,並把該段重新賦給key

7.lindex

lindex key index
作用:返回index索引上的值
例子: lindex key
2

8.llen

llen key 
作用:返回連結串列長度

9.linsert

linsert key after|before search value
在key連結串列中尋找search,並在search值前後,插入value
注:如果在連結串列中有多個相同的值,一旦找到一個search後,命令就結束了,因此不會插入多個value
rpush num 1 3 6 8 9
linsert num before 3 2 
1 2 3 6 8 9
linsert num after  6 7
1 2 3 6 7 8 9

10.rpoppush

rpoplpush source dest
作用:將一個(source)連結串列尾部的元素刪除並新增到另一個連結串列(dest)的頭部
例子: rpush task a b c d rpush job rpoplpush task job 場景:task
+job完成安全的佇列 1.rpoplpush task job 2.接收返回值,並做業務處理 3.如果成功,rpop job清除任務,如果不成功,下次從job裡再次取任務

11.brpop&blpop

brpop,blpop key timeout
等待彈出key的尾/頭元素
Timeout為等待超時時間
如果timeout為0,一直等待
場景:長輪詢Ajax線上聊天

 

 

SET集合

 

 Redis地集合和列表都可以存在多個字串,它們之間的不同在於,列表可以儲存多個相同的字串,而集合則通過使用雜湊來保證自己儲存的每個字串都是各不相同的(這些雜湊表只有鍵,但沒有與鍵相關聯的值)

 Redis集合使用無序方式儲存元素,所以使用者不能使用列表那樣,將元素推入集合的某一端,或者從集合的某一端彈出元素。

集合的性質:

  1. 無序性
  2. 確定性:
  3. 唯一性

:stringlink的命令中,可以通過range來訪問string中的某個字元或某幾個元素,但,因為集合的無序性,無法通過下標或範圍來訪問部分元素

因此想訪問元素,要麼隨機選一個,要麼都選

 

1.sadd

sadd key value1 value2
作用:建立集合並往集合key中增加元素

2.srem

srem value1 value2
作用:刪除集合中集為value1 value2的元素
返回值:忽略不存在的元素後,真正刪除掉的元素的個數

3.spop

spop key
作用:返回並刪除集合key中1個隨機元素

4.srandmember

srandmember  key
作用:返回集合key中隨機的1一個元素

5.sismember

sismember key value
作用:判斷value是否key集合
是返回1,否返回0

6.srandmember

srandmember key
作用:返回集合key中隨機的一個元素

7.sismember

sismember key value
作用:判斷value是否在key集合中
是返回1,否返回0

8.smembers

smembers key
作用:返回集合中的所有元素

9.scard

scard key
作用:返回集合中元素的個數

10.smove

smove source dest value
作用:把source中的value刪除,並新增到dest集合中

11.sinter

Sinter key1 key2 key3
作用::求出key1 key2 key3 三個集合中的交集,並返回
例子:
sadd s1 0 2 3 4
sadd s2 0 5 8 9
sadd s3 0 2 4 7
sinter s1 s2 s3
0

12.sinterstore

sinterstore dest key1 key2 key3
作用:求出key1,key2,key3 三個集合中的交集,並賦值給dest

13.suion

suion key1 key2...keyn
作用:求出key1,key2,keyn的並集,並返回

14.sdiff

sdiff key1 key2 key3
作用:求出key1與key2,key3的差集

 

 

HASH雜湊

Redis的雜湊可以儲存多個鍵值對之間的對映,和字串一樣,雜湊儲存既可以是字串又可以是數字值,並且使用者同樣可以對雜湊的數字值執行自增操作或者自減操作。

 

1.hset

hset key field value
作用:把key中 field域的值設為value
注:如果沒有field域,直接新增,如果有,則覆蓋原field域的值

2.hmset

hmset key field1 value1 [field2 value2 field3 value3 ......fieldn valuen]
作用:設定field1->N個域。對應的值是value->N

3.hget

hget key field
作用:返回key中的field域的值

4.hmget

hmget key field1 field2 fieldN
作用:返回key中的field fieldN域的值

5.hgetall

hgetall key
作用:返回key中所有域與其值

6.hdel

hdel key field
作用:刪除key中field域

7.hlen

hlen key
作用:返回key中元素的數量

8.hexists

hexists key field
作用:判斷key中有沒有field域

9.hincrby

hincrby key field value
作用:是把key中的field域的值增長整型值value

10.hincrbyfloat

hincrbyfloat key field value
作用:是把key中的field域增長浮點值value

11.hkeys

hkeys key
作用:返回key中所有field

12.kvals

kvals key
作用:返回key中所有value

 

 

 

 

Order-set 有序集合

 

有序集合和雜湊一樣,都用於儲存鍵值對:有序集合的鍵被稱為成員(member),每個成員都是各不相同的;而有序集合的值則被稱為分值(socre),分值必須為浮點數。

有序集合是redis裡面唯一一個既可以根據成員訪問元素(這一點和雜湊一樣),又可以根據分值以及分值的排列順序來訪問元素的結構。

 

1.zadd

zadd key score1 value1 score2 value2...
作用:建立並新增元素
例子: zadd
class 12 lily 13 lucy 18 lie

2.zrem

zrem key value1 value2...
作用:刪除集合鐘的元素

3.zremrangebyscore

zremrangebyscore key min max
作用:按照socre來刪除元素,刪除score在[min,max]之間的元素

4.zremrangebyrank 

zremrangebyrank key start end
作用:按排名刪除元素,刪除名次[start,end]之間的元素

5.zrank

zrank key member
作用:查詢member的排名(升序0名開始)

6.zrevrank

zrevrank key memeber
作用:查詢member的排名(降序0名開始)

7.zrange

zrange key start stop [withscores]
作用:把集合排序後,返回名次[start stop]的元素
預設是升序排列
withscores:是把score也列印出來

8.zrevrange

zrevrange key start stop
作用:把集合降序排序取名字[start,stop]之間的元素

9.zrangbyscore

zrangbyscore key min max [withscores] [limit offset N]
作用:集合(升序)排序後取socre在[min,max]內的元素
並跳過offset個,取出N個

10.zcard

zcard key
作用:返回元素個數

11.zcount

zcount key min max
作用:返回[min,max]區間內元素的數量

12.zinterstore

zinterstore destination numkeys key1 [key2...] 
[WEIGHTS weight [weight ...]]
[aggreagte sum|min|max]

求key1,key2的交集,key1,key2的權重分別是weight1,weight2
聚合方法:sum、min、max
聚合的結果儲存在dest集合內
Numkeys:計算交集的key的個數
weights,aggregate如何理解?
如果有交集,交集元素又有score,score怎麼處理?


zadd lisi 3 cat 5 dog 6 horse
zadd wang 2 cat 4 dog 8 horse 1 donkey
zinterstore result 2 lisi wang 
zrange result 0 -1 [withscores]

zinterstore result 2 lisi wang aggregate min
zrange result 0 -1 [withscores]

zinterstore result 2 lisi wang aggregate max
zrange result 0 -1 [withscores]

 

相關文章