Redis資料型別(下)
集合Set
Redis 的集合不是 個線性結構,而是一個 雜湊表結構 ,它的內部會根據 hash 分子 來
儲存和查詢資料,理論上 個集合可以儲存 232 (大約 42 億)個元素,因為採用雜湊表結
構,所以對於 Redis 集合的插入、刪除和查詢的複雜度都是 0(1 ),只是我們需要注意:
1.對於集合而言,它的每 個元素都是不能重複的,當插入相同記錄的時候都會失敗
2.集合是無序的。
3.集合的每 個元素都是 String 資料結構型別。
Red is 的集合可以對於不同的集合進行操作,比如求出兩個或者以上集合的交集、 差集和並集等。
sadd/smembers/sismember
sadd key number [member2 .....] 給鍵為key的集合增加成員,可增加多個
smembers key 返回集合所有成員
sismember key member 判斷member是否是key集合的成員
scard,獲取集合裡面的元素個數
獲取集合裡面的元素個數
scard key

srem key value 刪除集合中元素
srem key member [ member2 .... ]
移除集合中 元素,可以是多個元素
srandmember key 某個整數(隨機出幾個數)
* 從set集合裡面隨機取出2個
* 如果超過最大數量就全部取出,
* 如果寫的值是負數,比如-3 ,表示需要取出3個,但是可能會有重複值。
srandmember key [count]
count為隨機出數的個數,預設為1,為負數則取絕對值
spop key 隨機出棧
隨機彈 集合的一個元素
注意其隨機性 因為集合是無序的
smove key1 key2 在key1裡某個值 作用是將key1裡的某個值賦給key2
smove src des member
將成員 member 從集合 src 遷移到集合 des
原來集合的值可以說已經沒有了,直接去了另一個集合,另一個集合可以存在,不存在則建立
差集:sdiff
交集:sinter
並集:sunion
sdiff key I [key2] 找出兩個綜合的差集 引數如果是單 key ,那麼 Red is 就返回這key 的所有元素
sinter key I [key2] key key2 兩個集合的交集。 引數如果是單 key ,那麼 Red is 就返回這key 的所有元素
sunion key l [key2] 求兩 集合 並集 引數如果是單 key ,那麼 Red is 就返回這key 的所有元素
Hash雜湊
Redis 中雜湊結構就如同 Java map 一樣 個物件裡面有許多鍵值對,它是特別
合儲存物件的 ,如果記憶體足夠大,那麼 Redis hash 結構可以儲存 232_ 鍵值對 40
多億)。 般而言 不會使用到那麼大的一個鍵值對,所以我們認為 Redis 可以儲存很多的
鍵值對。在 Redis 中, hash 是一個 String 型別的 field value 對映表,因此我們儲存的
資料實際在 Redis記憶體中的一個字串
hash 的鍵值對在記憶體中是一種無序的狀態

KV模式不變,但V是一個鍵值對
hset/hget/hmset/hmget/hgetall/hdel
hset key file value:設定鍵值對 單個
hget :獲取屬性值 單個

hmset key field1 value1 [filed2 value2...] 設定鍵值對, 多個
hmget:獲取多個hash指定鍵的值 多個

hgetall:獲取所有hash結構中的值

hdel:刪除hash中的某些欄位

hlen返回key中的數量

hexists key 在key裡面的某個值的key

hkeys/hvals
hkeys:獲取所有的鍵
hvals:獲取所有的值

hincrby/hincrbyfloat
hincrby key field incremen:指定給 hash 結構中的某 欄位加上 個整,要求該欄位也是整數字符串
hincrbyfloat key field increment:指定給 hash 結構中的某 欄位加上 個浮點數,要求該欄位也是整數字符串

hsetnx:不存在賦值, 存在了無效。
hsetnx key field value
有序集合:
只是說它是有序的
和無序集合的主要區別在於每 個元素除了值之外,它還會 多一個分數
分數是一個浮點數,在 Java 中是使用雙精度表示的
Redis 就可以支援對分數從小到大或者從大到小的排序。這裡和無序集合一樣,對於
每一個元素都是唯一的 ,但是對於不同元素而 ,它的分 數可以一樣。
有序集合是依賴 key 標示它是屬於哪個集合,依賴分數進行排序,所以值和分數是必須的
zadd/zrange
zadd key score value(value1 ) 【score2 value2 ...] :增加一個或多個成員,key不存在則建立有序集合
zrangebyscore key 開始score 結束score
zrem key 某score下對應的value值,作用是刪除元素
zcard/zcount key score區間/zrank key values值,作用是獲得下標值/zscore key 對應值,獲得分數
zcard:統計個數
zcount key score: zcount key min max 根據 分數 返回對應的成員列表
zrank key values:
zrevrank key values值,作用是 逆序 獲得 下標值
zrevrange 從大到小的按分數排序

zrevrangebyscore key 結束score 開始score
從大到小的按分數排序
zrevrangebyscore key max min [withscores