redis ruby客户端学习( 三)
接上一篇 redis ruby客户端学习( 二)
对于redis的五种数据类型:字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets),上一篇介绍了哈希和列表。
一,集合
- mset。添加一个或者多个元素到集合(set)里
require "redis" r = Redis.new r.mset 'my_set', 'value1'
- scard。返回集合存储的key的基数 (集合元素的数量).
r.scard 'my_set'
返回一个集合与给定集合的差集的元素.
r.sdiff 'my_set', 'my_set2'
- sinter。返回指定所有的集合的成员的交集.
r.sinter 'my_set', 'my_set2'
- sismember。返回成员
member
是否是存储的集合key
的成员.
r.sismember 'my_set', 'value2'
- smembers。返回
key
集合所有的元素.
r.smembers 'my_set'
- smove。
将member
从source
集合移动到destination
集合中. 对于其他的客户端,在特定的时间元素将会作为source
或者destination
集合的成员出现.
如果source 集合不存在或者不包含指定的元素,这smove命令不执行任何操作并且返回0
.否则对象将会从source集合中移除,并添加到destination集合中去,如果destination集合已经存在该元素,则smove命令仅将该元素充source集合中移除.
如果source
和destination
不是集合类型,则返回错误.
r.smove 'my_set2', 'my_set', 'temp'
- srem。
在key
集合中移除指定的元素. 如果指定的元素不是key
集合中的元素则忽略 如果key
集合不存在则被视为一个空的集合,该命令返回0
.
如果key
的类型不是一个集合,则返回错误.
r.srem 'my_set', 'temp'
- sunion。
返回给定的多个集合的并集中的所有成员.
r.sunion 'my_set', 'my_set2'
二,有序集合
- zadd。
该命令添加指定的成员到key对应的有序集合中,每个成员都有一个分数。你可以指定多个分数/成员组合。如果一个指定的成员已经在对应的有序集合中了,那么其分数就会被更新成最新的,并且该成员会重新调整到正确的位置,以确保集合有序。如果key不存在,就会创建一个含有这些成员的有序集合,就好像往一个空的集合中添加一样。如果key存在,但是它并不是一个有序集合,那么就返回一个错误。
分数的值必须是一个表示数字的字符串,并且可以是double类型的浮点数。
r.zadd 'z_set', 3,'three'
- zcard。返回key的有序集元素个数。
r.zcard 'z_set'
- zount。返回有序集key中,score值在min和max之间(默认包括score值等于min或max)的成员。
r.zcount 'z_set',1,3
- zincrby。
为有序集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'
- zrange。
返回有序集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
- zrank。
返回有序集key中成员member的排名。其中有序集成员按score值递增(从小到大)顺序排列。排名以0为底,也就是说,score值最小的成员排名为0。
r.zrank 'z_set','two'
- zrem。从排序的集合中删除一个成员
r.zrem 'z_set','two'
- zrank。返回有序集key中,成员member的score值。
r.zrank 'z_set','five'
小结:
本次主要介绍了redis ruby客户端五种数据类型中集合和有序集合的常见方法。