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。

  将membersource集合移动到destination集合中. 对于其他的客户端,在特定的时间元素将会作为source或者destination集合的成员出现.

  如果source 集合不存在或者不包含指定的元素,这smove命令不执行任何操作并且返回0.否则对象将会从source集合中移除,并添加到destination集合中去,如果destination集合已经存在该元素,则smove命令仅将该元素充source集合中移除.

  如果sourcedestination不是集合类型,则返回错误.

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客户端五种数据类型中集合和有序集合的常见方法。