標籤:
接上一篇 redis ruby用戶端學習( 二)
對於redis的五種資料類型:字串(String), 雜湊(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets),上一篇介紹了雜湊和列表。
一,集合
require "redis"r = Redis.newr.mset ‘my_set‘, ‘value1‘
- scard。返回集合儲存的key的基數 (集合元素的數量).
r.scard ‘my_set‘
返回一個集合與給定集合的差集的元素.
r.sdiff ‘my_set‘, ‘my_set2‘
r.sinter ‘my_set‘, ‘my_set2‘
- sismember。返回成員
member
是否是儲存的集合 key
的成員.
r.sismember ‘my_set‘, ‘value2‘
r.smembers ‘my_set‘
將member
從source
集合移動到destination
集合中. 對於其他的用戶端,在特定的時間元素將會作為source
或者destination
集合的成員出現.
如果source 集合不存在或者不包含指定的元素,這smove命令不執行任何操作並且返回0
.否則對象將會從source集合中移除,並添加到destination集合中去,如果destination集合已經存在該元素,則smove命令僅將該元素充source集合中移除.
如果source
和destination
不是集合類型,則返回錯誤.
r.smove ‘my_set2‘, ‘my_set‘, ‘temp‘
在key
集合中移除指定的元素. 如果指定的元素不是key
集合中的元素則忽略 如果key
集合不存在則被視為一個空的集合,該命令返回0
.
如果key
的類型不是一個集合,則返回錯誤.
r.srem ‘my_set‘, ‘temp‘
返回給定的多個集合的並集中的所有成員.
r.sunion ‘my_set‘, ‘my_set2‘
二,有序集合
該命令添加指定的成員到key對應的有序集合中,每個成員都有一個分數。你可以指定多個分數/成員組合。如果一個指定的成員已經在對應的有序集合中了,那麼其分數就會被更新成最新的,並且該成員會重新調整到正確的位置,以確保集合有序。如果key不存在,就會建立一個含有這些成員的有序集合,就好像往一個空的集合中添加一樣。如果key存在,但是它並不是一個有序集合,那麼就返回一個錯誤。
分數的值必須是一個表示數位字串,並且可以是double類型的浮點數。
r.zadd ‘z_set‘, 3,‘three‘
r.zcard ‘z_set‘
- zount。返回有序集key中,score值在min和max之間(預設包括score值等於min或max)的成員。
r.zcount ‘z_set‘,1,3
為有序集key的成員member的score值加上增量increment。如果key中不存在member,就在key中添加一個member,score是increment(就好像它之前的score是0.0)。如果key不存在,就建立一個只含有指定member成員的有序集合。
當key不是有序集類型時,返回一個錯誤。
score值必須是字串表示的整數值或雙精確度浮點數,並且能接受double精度的浮點數。也有可能給一個負數來減少score的值。
r.zincrby ‘z_set‘,10,‘two‘
返回有序集key中,指定區間內的成員。其中成員按score值遞增(從小到大)來排序。具有相同score值的成員按字典序來排列。
如果你需要成員按score值遞減(score相等時按字典序遞減)來排列,請使用ZREVRANGE命令。 下標參數start和stop都以0為底,也就是說,以0表示有序集第一個成員,以1表示有序集第二個成員,以此類推。 你也可以使用負數下標,以-1表示最後一個成員,-2表示倒數第二個成員,以此類推。
超出範圍的下標並不會引起錯誤。如果start的值比有序集的最大下標還要大,或是start > stop時,ZRANGE命令只是簡單地返回一個空列表。另一方面,假如stop參數的值比有序集的最大下標還要大,那麼Redis將stop當作最大下標來處理。
r.zrange ‘z_set‘,1, -1
返回有序集key中成員member的排名。其中有序整合員按score值遞增(從小到大)順序排列。排名以0為底,也就是說,score值最小的成員排名為0。
r.zrank ‘z_set‘,‘two‘
r.zrem ‘z_set‘,‘two‘
- zrank。返回有序集key中,成員member的score值。
r.zrank ‘z_set‘,‘five‘
小結:
本次主要介紹了redis ruby用戶端五種資料類型中集合和有序集合的常見方法。
redis ruby用戶端學習( 三)