首页 > 代码库 > redis ruby客户端学习( 二)

redis ruby客户端学习( 二)

接上一篇redis ruby客户端学习( 二)

对于redis的五种数据类型:字符串(String)哈希(Map)列表(list)集合(sets) 和 有序集合(sorted sets),上一篇介绍了字符串。

 

1,哈希(Map)

 

  • hset。设置 key 指定的哈希集中指定字段的值。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。如果字段在哈希集中存在,它将被重写。

 

require "redis"r = Redis.newr.hset my_hash, field1, 001
  • hget。返回 key 指定的哈希集中该字段所关联的值
r.hget my_hash, field1
  • hdel。从 key 指定的哈希集中移除指定的域。在哈希集中不存在的域将被忽略。如果 key 指定的哈希集不存在,它将被认为是一个空的哈希集,该命令将返回0。
r.hdel my_hash, field1
  • hexists。返回字段是否是 key 指定的哈希集中存在的字段。
r.hexists my_hash, field1
  • hgetall。返回 key 指定的哈希集中所有的字段和值。
r.hgetall my_hash
  • hincrby。增加 key 指定的哈希集中指定字段的数值。
r.hincrby my_hash, field1,5
  • hkeys。返回 key 指定的哈希集中所有字段的名字。
r.hkeys my_hash
  • hvals。返回 key 指定的哈希集中所有字段的值。
r.hvals my_hash
  • hlen。返回 key 指定的哈希集包含的字段的数量。
r.hlen my_hash
  • hmget。对于哈希集中不存在的每个字段,返回 nil 值。因为不存在的keys被认为是一个空的哈希集,对一个不存在的 key 执行 hmget 将返回一个只含有 nil 值的列表。
r.hmget my_hash,field2, field3
  • hmset。设置 key 指定的哈希集中指定字段的值。该命令将重写所有在哈希集中存在的字段。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。
r.hmset my_hash,field4, 004, field5, 005

2,列表(list)

  • lpush。将所有指定的值插入到存于 key 的列表的头部(左边)。如果 key 不存在,那么在进行 push 操作前会创建一个空列表。 如果 key 对应的值不是一个 list 的话,那么会返回一个错误。
r.lpush "my_list", value1
  • lindex。返回列表里的元素的索引 index 存储在 key 里面。 下标是从0开始索引的,所以 0 是表示第一个元素, 1 表示第二个元素,并以此类推。 负数索引用于指定从列表尾部开始索引的元素。在这种方法下,-1 表示最后一个元素,-2 表示倒数第二个元素,并以此往前推。
r.lindex "my_list", 1
  • linsert。

  把 value 插入存于 key 的列表中在基准值 pivot 的前面或后面。

  当 key 不存在时,这个list会被看作是空list,任何操作都不会发生。

  当 key 存在,但保存的不是一个list的时候,会返回error。

r.linsert my_list, before, value1, value3r.linsert my_list, after, value1, value4
  • llen。返回存储在 key 里的list的长度。 如果 key 不存在,那么就被看作是空list,并且返回长度为 0。 当存储在 key 里的值不是一个list的话,会返回error。
r.llen "my_list"
  • lpop。移除并且返回 key 对应的 list 的第一个元素(左边)。
r.lpop "my_list"
  • lrange。

  返回存储在 key 的列表里指定范围内的元素。 start 和 end 偏移量都是基于0的下标,即list的第一个元素下标是0(list的表头),第二个元素下标是1,以此类推。

  偏移量也可以是负数,表示偏移量是从list尾部开始计数。 例如, -1 表示列表的最后一个元素,-2 是倒数第二个,以此类推。

r.lrange "my_list", 0, -1

  

  • lrem。

  从存于 key 的列表里移除前 count 次出现的值为 value 的元素。 这个 count 参数通过下面几种方式影响这个操作:

    • count > 0: 从头往尾移除值为 value 的元素。
    • count < 0: 从尾往头移除值为 value 的元素。
    • count = 0: 移除所有值为 value 的元素。

  比如, LREM list -2 "hello" 会从存于 list 的列表里移除最后两个出现的 "hello"

  需要注意的是,如果list里没有存在key就会被当作空list处理,所以当 key 不存在的时候,这个命令会返回 0

r.lrange "my_list", 0, -1 #=> ["value1", "value1", "value1", "value1", "value3", "value1", "value4"] r.lrem "my_list", 2, "value1"r.lrange "my_list", 0, -1# => ["value1", "value1", "value3", "value1", "value4"] 
  • lset。设置 index 位置的list元素的值为 value。index超出范围时会返回一个error。
r.lrange "my_list", 0, -1 # => ["value1", "value1", "value3", "value1", "value4"] r.lset "my_list", 0, "value5"r.lrange "my_list", 0, -1# => ["value5", "value1", "value3", "value1", "value4"] 
  • rpop。移除并返回存于 key 的 list 的最后一个元素。
r.rpop "my_list"
  • rpush。向存于 key 的列表的尾部插入所有指定的值。如果 key 不存在,那么会创建一个空的列表然后再进行 push 操作。 当 key 保存的不是一个列表,那么会返回一个错误。
r.rpush "my_list", value6

小结:

本次主要介绍了redis ruby客户端五种数据类型中哈希和列表的常见方法。

 

redis ruby客户端学习( 二)