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

时间: 2024-08-05 07:07:02

redis ruby客户端学习(一)的相关文章

redis ruby客户端学习( 二)

接上一篇redis ruby客户端学习( 二) 对于redis的五种数据类型:字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets),上一篇介绍了字符串. 1,哈希(Map) hset.设置 key 指定的哈希集中指定字段的值.如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联.如果字段在哈希集中存在,它将被重写. require "redis" r = Redis.new r.hset 'my_h

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

redis ruby客户端学习(五)

一,redis是支持事务的,请看这篇介绍. 下面介绍几个ruby实现的命令,multi,exec,discard,watch,unwatch. 1,multi:标记一个事务块开始,exec:执行所有 MULTI 之后发的命令 require 'Redis' r = Redis.new r.set 'a', 1 r.set 'b', 2 r.multi r.set 'a', 3 r.set 'b', 6 r.exec #r.get 'a' #=> "3" #r.get 'b' #

redis ruby客户端学习(四)

redis是一个快速.稳定的发布/订阅的信息系统. 这里有相关的介绍 可以用这个发布订阅系统,实现聊天功能. 1,假设有两个用户,分别是user1和user2,各创建一个redis连接. u1 = Redis.new u2 = Redis.new 2,u1订阅一个频道channel1 u1.subscribe "channel1" do |on| on.subscribe do |channel, subscriptions| puts "Subscribed to ##{c

Redis学习(一)、安装Redis和客户端

Redis学习(一).安装Redis和客户端 一.Windows安装Redis 1.下载安装包Redis-x64-3.0.504.zip到本地 2.解压 3.打开CMD,切换到解压后的redis目录,然后 C:\Users\Administrator> F:F:\> CD F:\redis\Redis-x64-3.0.504F:\redis\Redis-x64-3.0.504> redis-server.exe redis.windows.conf 4.在不关闭之前的CMD的情况下,再打

redis源码学习(客户端)

大概介绍 redis 客户端设计主要是存储客户的链接,请求,请求解析的命令,执行结果.先看server的结构和client的结构,server里面有多个client,相当于一个服务端可以连多个客户端,服务端根据事件触发模式依次处理客户端的请求. server结构 struct redisServer { /* General */ // 配置文件的绝对路径 char *configfile; /* Absolute config file path, or NULL */ // serverCr

Redis缓存技术学习系列之邂逅Redis

??作为一个反主流的开发者,在某种程度上,我对传统关系型数据库一直有点"讨厌",因为关系型数据库实际上和面向对象思想是完全冲突的,前者建立在数学集合理论的基础上,而后者则是建立在软件工程基本原则的基础上.虽然传统的ORM.序列化/反序列化在一定程度上解决了这种冲突,但是软件开发中关于使用原生SQL语句还是使用ORM框架的争论从来没有停止过.可是实际的业务背景中,是完全无法脱离数据库的,除非在某些特定的场合下,考虑到信息安全因素而禁止开发者使用数据库,在主流技术中数据库是一个非常重要的组

redis 安装配置学习笔记

redis 安装配置学习笔记 //wget http://download.redis.io/releases/redis-2.8.17.tar.gz 下载最新版本 wget http://download.redis.io/redis-stable.tar.gz 首先必须要有 gcc 与 make apt-get install gcc apt-get install make 1.解压 [email protected]:~# tar -xvf redis-stable.tar.gz 2.测

Redis源码学习:字符串

Redis源码学习:字符串 1.初识SDS 1.1 SDS定义 Redis定义了一个叫做sdshdr(SDS or simple dynamic string)的数据结构.SDS不仅用于 保存字符串,还用来当做缓冲区,例如AOF缓冲区或输入缓冲区等.如下所示,整数len和free分别表示buf数组中已使用的长度和剩余可用的长度,buf是一个原生C字符串,以\0结尾. sds就是sdshdr中char buf[]的别名,后面能看到,各种操作函数的入参和返回值都是sds而非sdshdr.那sdshd