redis ruby客户端学习,一

  一,安装redis服务器

  自行解决吧,没什么好说的。

  二,安装redis的ruby客户端

  这里使用的是redis-rb,自行安装, https://github.com/redis/redis-rb

  三,连接服务器

require "redis"

r = Redis.new

  这是最简单的连接方式,其他方式参见github

  四,存取数据

  Redis类中的方法和redis命令是一一对应的。

  所以github上只给了很少的例子,想用其他的方法,可以去参考redis命令。

  redis的值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets)有序集合(sorted sets)等类型

  下面简要介绍常用的一些方法。

  1, 关键字

  redis是key -value型的,对key有一些方法

  •   删除一个key:
r.del('name')
  •   检查一个key是否存在 
r.exists('name')
  • 设置key的过期时间(秒数)。如果key已过期,将会被自动删除,第二个参数的单位为秒。
r.expire('name',60)
  • expireat 的作用和 expire类似,都用于为 key 设置生存时间。不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳 Unix timestamp
r.expireat('name2',Time.now.to_i+60)
  • pexpire和 expire的作用类似,但是它以毫秒为单位设置 key 的生存时间,而不像 expire 那样,以秒为单位。
r.pexpire 'name', 1000000
  • pexpireat和 expireat类似,但它以毫秒为单位设置 key 的过期 unix 时间戳,而不是像 expireat 那样,以秒为单位。
r.pexpireat 'name', Time.now.to_i+1000000
  • 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
r.ttl 'name'
  • pttl类似于 ttl ,但它以毫秒为单位返回 key 的剩余生存时间,而不是像 ttl那样,以秒为单位。
r.ttl 'my_test'
  • 移除给定key的生存时间,将这个 key 从『易失的』(带生存时间 key )转换成『持久的』(一个不带生存时间、永不过期的 key )。
r.persist 'name'
  • 从当前数据库返回一个随机的key。
r.randomkey
  • 将key重命名为newkey,如果key与newkey相同,将返回一个错误。如果newkey已经存在,则值将被覆盖。
r.rename 'name', 'new_name'
  • type返回 key 所储存的值的类型。

返回值:

none (key不存在)

string (字符串)

list (列表)

set (集合)

zset (有序集)

hash (哈希表)

r.type 'name'
  • 查找所有符合给定模式 pattern 的 key
r.keys('n*')

  2,字符串

  •   存值:
r.set('name'], 'li')
#或者
r['sex'] = 'male'
  •   取值:
r.get('name')
#或者
r['name']
  • append, 如果 key 已经存在,并且值为字符串,那么这个命令会把 value 追加到原来值(value)的结尾。 如果 key 不存在,那么它将首先创建一个空字符串的key,再执行追加操作,这种情况 append 将类似于 set 操作。
r.append 'name', '1111'
  • getrange获取存储在key上的值的一个子字符串
r.getrange 'name', 1,3
  • mget 返回所有指定的key的value。对于每个不对应string或者不存在的key,都返回特殊值nil。正因为此,这个操作从来不会失败。
r.mget 'name', 'rename'
  • strlen 返回key的string类型value的长度。如果key对应的非string类型,就返回错误。
r.strlen 'name'

下面是和统计关系比较密切的:

  • incr对key对应的数字做加1操作。如果key不存在,那么在操作之前,这个key对应的值会被置为0。如果key有一个错误类型的value或者是一个不能表示成数字的字符串,就返回错误。这个操作最大支持在64位有符号的整型数字。

提醒:这是一个string操作,因为Redis没有专用的数字类型。key对应的string都被解释成10进制64位有符号的整型来执行这个操作。

Redis会用相应的整数表示方法存储整数,所以对于表示数字的字符串,没必要为了用字符串表示整型存储做额外开销。

r.set 'counter', '123456'
r.incr 'counter'
  • 将key对应的数字加decrement。如果key不存在,操作之前,key就会被置为0。如果key的value类型错误或者是个不能表示成数字的字符串,就返回错误。这个操作最多支持64位有符号的正型数字。
r.incrby 'counter',100
  • decr对key对应的数字做减1操作。如果key不存在,那么在操作之前,这个key对应的值会被置为0。如果key有一个错误类型的value或者是一个不能表示成数字的字符串,就返回错误。这个操作最大支持在64位有符号的整型数字。
r.set 'counter', '123456'
r.decr 'counter'
  • decrby将key对应的数字减decrement。如果key不存在,操作之前,key就会被置为0。如果key的value类型错误或者是个不能表示成数字的字符串,就返回错误。这个操作最多支持64位有符号的正型数字。
r.decrby 'counter', 100

小结:

本次主要介绍了redis ruby客户端的关键字的处理,以及五种数据类型之一的字符串类型的常见方法。