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 6 ! get 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集合使用無序方式儲存元素,所以使用者不能使用列表那樣,將元素推入集合的某一端,或者從集合的某一端彈出元素。
集合的性質:
- 無序性
- 確定性:
- 唯一性
注:在string和link的命令中,可以通過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]