2018年3月15日 星期四

五大類型指令 (Redis 二)

五種型態為:string、list、set、zset、hash,上一篇已經有寫 string了,這篇寫另外四種,可用type key名稱查是什麼型態


※list

可重覆的隊列


增、改:

lpush(left push):從左邊開始塞值,越先塞的會被擠到右邊,重覆下指令會 append
rpush(right push):和 lpush 一樣,差別是從右邊往左邊塞值
lpushx(exists)、rpushx:只有 key 存在才會 push 成功,也就是 key 至少要有一個元素

linsert:在指定的 value 之前或之後插入想加入的值
    linsert key名稱 [before|after] 已有的值 想插入的值:在已有的值前或後增加想插入的值,但      如果有多個已有的值,只會插入第一個
    linsert key before xxx ooo:在 xxx 前面插入 ooo

lset :覆蓋指定的index
假設有個 list 內容是 a b c d e,下 lset list 3 xxx,那 list 內容會變成 a b c xxx e



lpush示例:


rpush示例:



刪:

lrem(left remove):刪除元素
    格式:lrem key名稱 count 刪除內容
    .count > 0 從左到右刪除幾個最右邊參數的內容
    .count < 0 從右到左刪除幾個最右邊參數的內容
    .count = 0 將最右邊參數的內容全部刪除
ltrim:保留一個連續範圍,其他全部刪除,由0開始,-1表示倒數第一個,-2表示倒數第二個,依此類推


查:

llen(left length):查有幾個元素
lindex(left index):查第幾個元素的值
lrange:由0開始,-1表示倒數第一個,-2表示倒數第二個,依此類推
rlen、rrem、rindex、rrange、rtrim:哈哈哈!唬弄你的,並沒有這些命令


刪+查:

lpop:取得最左邊的值後刪除
rpop:取得最右邊的值後刪除

blpop:和 lpop 很像,當沒有值可 pop 時,會阻塞住,直到有值返回或 timeout
    blpop key… timeout 時間(秒)
brpop:blpop 的相反


刪+增:

rpoplpush:將最右邊的值彈出插入到另一個 list(自己也行),然後刪除最右邊的值








※set

裡面的成員不可重覆


增、改:

sadd:增加、附加成員


刪:

srem:刪除一到多個成員


查:

smembers:查看所有成員
sismember:給一個 value,回傳是否是裡面的成員
scard:查看有多少成員

srandmember:隨機出現一個元素
    但如果有加參數,就會顯示多少個,但不會重覆
    又如果數字超過成員的數,還是只會顯示成員的總數

差集、交集、併集

    sadd set1 a b c d e
    sadd set2 c d e f g
    sadd set3 b c d e f

.sdiff:差集,返回的是第一個 key 剩下的部分
    sdiff set1 set2,返回隨機的 a b
    sdiff set2 set1,返回隨機的 f g
    sdiff set1 set2 set3,返回 a
.sinter:交集。返回相同的部分
    sinter set1 set2,返回隨機的 c d e
    sinter set1 set2 set3,還是返回隨機的 c d e
.sunion:併集,全部成員都有,但會去掉重覆的部分
    sunion set1 set2,返回隨機的 a b c d e f g

sdiffstore、sinterstore、sunionstore,這三個都是在最後加上「store」,前面沒加 store 只是返回,加上 store 後,可以儲存在新的 set,此 key 可以不存在,存在就覆蓋
sdiffstore xxx set1 set2,將 set1 set2 的差集結果,存到 xxx 這個 key


刪+查:

spop:返回並刪除隨機一到多個數


刪+增:

smove 將 key1 裡的成類數數移動到 key2 裡的成員數值
    smove key1 key2 成員數值



※hash

Key、Value 鍵值對


增、改:

hset:塞一個鍵值對
hmset:塞多個鍵值對
hsetnx:key沒有才能塞進去
hincrby:增加整數,可為負數
hincrbyfloat:增加整數、小數,可為負數


刪:

hdel:刪除一到多個鍵


查:

hget:取一個鍵值對
hmget:取多個鍵值對
hgetall:取得 key 裡的所有鍵值對
hkeys:取得 key 裡的所有鍵
hvals:取得 key 裡的所有值
hlen:取得 key 裡有多少鍵值對
hstrlen:取得 key 裡的鍵,對應鍵的值有多長
hexists:判斷 key 裡有沒有給定的鍵


※sotedset

set 加上一個數字,可以利用此數字由小到大排序,這個數字的名字叫 score


增、改:

zadd:新增、附加一到多個成員,score 可以是負數
    xx:只能修改,注意回傳值,預設是新增成功的數量,加 ch 才看的出來
    nx:只能新增
    incr:增加 score,可以是負數
    ch:變化在返回值,不加時回傳的是新增的數量;加了是更改的數量
zincrby:增加、減少某個 key 的 score,可用小數點,但有可能不夠精確
    如果沒有 key 會自動增加 key
    如果 key 裡沒有對應的值,會新增


刪:

zrem:移除一到多個成員
zremrangebyscore:移除 score 的範圍
zremrangebyrank:移除 index 的範圍


查:

zrange[withscores]:查看元素,加上 withscores 會顯示 score
zrevrange:zrange 的倒序
zrank:給某個成員值,取得它的 index
zrevrank:zrank 的倒序
zscore:查看某個成員的 score
zcard:查看有多少成員
zcount:查看某 score 範圍的成員個數
zrangebyscore:依 score 由小到大排序
    zrangebyscore key -10 5,表示 score 從 -10 到 5
    zrangebyscore key (-10 5,表示 score 從 -10 到 5,但不包括 -10,「(」有不等於的意思
    zrangebyscore key -inf +inf,因為有時想從小到大全部列出來,不想寫範圍,可以用這個

上面的結果有一個全新的資料後,還可以再截取,使用 limit
    zrangebyscore key -10 5 limit 2 4,表示 score 從 -10 到 5 出來的結果,然後再從新的結果取index 為 2 開始的數字開始取 4 個

zrevrangebyscore:反向的 zrangebyscore

沒有留言:

張貼留言