1. 程式人生 > >redis的資料結構sets和hash

redis的資料結構sets和hash

3.儲存sets型別

在Redis中,我們可以將Set型別看作為沒有排序的字元集合,和List型別一樣,我 們也可以在該型別的資料值上執行新增、刪除或判斷某一元素是否存在等操作。需要 說明的是,這些操作的時間是常量時間。Set可包含的最大元素數是4294967295。 和List型別不同的是,Set集合中不允許出現重複的元素。和List型別相比,Set類 型在功能上還存在著一個非常重要的特性,即在伺服器端完成多個Sets之間的聚合計 算操作,如unions、intersections和differences。由於這些操作均在服務端完成, 因此效率極高,而且也節省了大量的網路IO開銷

1)sadd key value1、value2…

:向set中新增資料,如果該key的值已有則不會 重複新增 2)smembers key:獲取set中所有的成員 3)scard key:獲取set中成員的數量 在這裡插入圖片描述 4)sismember key member:判斷引數中指定的成員是否在該set中,1表示存 在,0表示不存在或者該key本身就不存在 5)srem key member1、member2…:刪除set中指定的成員 在這裡插入圖片描述 6)srandmember key:隨機返回set中的一個成員 在這裡插入圖片描述 7)sdiff sdiff key1 key2:返回key1與key2中相差的成員,而且與key的順序有 關。即返回差集。 在這裡插入圖片描述 8)sdiffstore destination key1 key2
:將key1、key2相差的成員儲存在 destination上 在這裡插入圖片描述 9)sinter key[key1,key2…]:返回交集。 10)sinterstore destination key1 key2:將返回的交集儲存在destination上 在這裡插入圖片描述

11)sunion key1、key2:返回並集。 在這裡插入圖片描述 12)sunionstore destination key1 key2:將返回的並集儲存在destination上 在這裡插入圖片描述

# 4.儲存sortedset

Sorted-Sets和Sets型別極為相似,它們都是字串的集合,都不允許重複的成員出 現在一個Set中。它們之間的主要差別是Sorted-Sets中的每一個成員都會有一個分 數(score)與之關聯,Redis正是通過分數來為集合中的成員進行從小到大的排序。然 而需要額外指出的是,儘管Sorted-Sets中的成員必須是唯一的,但是分數(score) 卻是可以重複的。 在Sorted-Set中新增、刪除或更新一個成員都是非常快速的操作,其時間複雜度為 集合中成員數量的對數。由於Sorted-Sets中的成員在集合中的位置是有序的,因此, 即便是訪問位於集合中部的成員也仍然是非常高效的。事實上,Redis所具有的這一 特徵在很多其它型別的資料庫中是很難實現的,換句話說,在該點上要想達到和Redis 同樣的高效,在其它資料庫中進行建模是非常困難的。 例如:遊戲排名、微博熱點話題等使用場景。 在這裡插入圖片描述

1)zadd key score member score2 member2 … :將所有成員以及該成員的 分數存放到sorted-set中 2)zcard key:獲取集合中的成員數量 在這裡插入圖片描述 3)zcount key min max:獲取分數在[min,max]之間的成員 zincrby key increment member:設定指定成員的增加的分數。 zrange key start end [withscores]:獲取集合中腳標為start-end的成員,[withscores]引數表明返回的成員包含其分數。 zrangebyscore key min max [withscores] [limit offset count]:返回分數在[min,max]的成員並按照分數從低到高排序。[withscores]:顯示分數;[limit offset count]:offset,表明從腳標為offset的元素開始並返回count個成員。 zrank key member:返回成員在集合中的位置。 zrem key member[member…]:移除集合中指定的成員,可以指定多個成員。 zscore key member:返回指定成員的分數

5.儲存hash

Redis中的Hashes型別可以看成具有String Key和String Value的map容器。所 以該型別非常適合於儲存值物件的資訊。如Username、Password和Age等。如果 Hash中包含很少的欄位,那麼該型別的資料也將僅佔用很少的磁碟空間。每一個Hash 可以儲存4294967295個鍵值對。 在這裡插入圖片描述

1)hset key field value:為指定的key設定field/value對(鍵值對)。 2)hgetall key:獲取key中的所有filed-vaule 在這裡插入圖片描述 3)hget key field:返回指定的key中的field的值 在這裡插入圖片描述 4)hmset key fields:設定key中的多個filed/value

5)hmget key fileds:獲取key中的多個filed的值 6)hexists key field:判斷指定的key中的filed是否存在 7)hlen key:獲取key所包含的field的數量 8)hincrby key field increment:設定key中filed的值增加increment,如:age 增加20