zoukankan      html  css  js  c++  java
  • 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客户端的关键字的处理,以及五种数据类型之一的字符串类型的常见方法。

  • 相关阅读:
    c# 运算符 ? ??
    c# linq <未完>
    javasript this
    python3 闭包(一)
    dom 中的换行符
    (转)关于 awk 的 pattern(模式)
    linux note(1)
    python sqlite3
    python 特殊方法
    Go Example--锁
  • 原文地址:https://www.cnblogs.com/fanxiaopeng/p/4197740.html
Copyright © 2011-2022 走看看