世界上最伟大的投资就是投资自己的教育

首页Redis
随风 · 练气

Redis 学习笔记系列文章之 Redis 的 Ruby 客户端 (三)

随风发布于3180 次阅读

1. 介绍

clients这里列出了 redis 所支持的语言的所有客户端程序,其中就有 ruby 的。有这么多的客户端,说明要实现 redis 的客户端是不难的。其实你只要掌握一种语言的 socket 编程就可以实现的,比如 ruby 中的 socket 编程,本站会有相关的章节来单独介绍在 ruby 中是如何进行 socket 编程的。redis 是基于 tcp/ip 的通讯协议,也就是说有监听的 ip 地址和端口号,只要通过一种语言创建 socket 连接到 redis 的服务器中,然后发送数据给 redis 服务器,从 redis 服务器那得到响应数据再返回,这样就能通讯了,也就是一个客户端。在这一篇文章我们会介绍几种 ruby 语言实现的 redis 客户端程序,也要介绍涉及到的相关的 redis 的技术。

2. redis-rb

redis-rb是官方推荐的一个 gem,它是线程安全的,支持管道,客户端分片,且性能也比较好。

2.1 安装

首先来安装它。

gem install redis
2.2 基本的使用

使用的时候,第一步是连接数据库,进入irb

➜  ~  irb
> require "redis"
true
> redis = Redis.new
#<Redis client v3.2.1 for redis://127.0.0.1:6379/0>

这样就生成了一个新的实例redisRedis.new默认情况下是连接到本机 (127.0.0.1),端口 6379,也就是默认的端口,选择的是第 0 个数据库。

这样的数据库是什么意思呢?其实 redis 也是有数据库的概念的,默认情况下 redis 会有 16 个数据库,编号从 0 到 15,当然这个数据库的数量值是可以在配置文件中修改的。默认不指定数据库的情况下,一般就是使用第 0 个数据库。但是使用SELECT命令可以切换数据库。数据库相当于数据的隔离空间,只是用这个数据来标志隔离空间,就是没有语义化,很难被记住。

比如我要连接另一台机器上的 redis 服务器,可以这样。

redis = Redis.new(:host : "10.0.1.1", :port : 6380, :db : 15)

现在连接好,我就可以发送请求的指令了。

> redis.set("mykey", "hello world")
"OK"
> redis.get("mykey")
"hello world"

你可以用redis-cli工具查看是不是真的有键为`mykey'的值啦。

在官方 readme 文档中列出的只有 get 和 set 两个方法。但是 redis-rb 支持所有常见的 redis 指令。这些方法在源码的其中一个文件lib/redis/distributed.rb可被发现到。比如:

> redis.set :count, 12
"OK"
> redis.incr :count
13
2.3 Pipelining(管道)

管道是用于批量发送指令给 redis 服务器,当你需要发送很多的指令给 redis 服务器时,就可以用管道,毕竟你每条指令发送到服务器,再服务器回传响应,都是需要时间的,而把所有指令合成一个管道一起发送,这样就能大大地减少时间。比如:

redis.pipelined do
  redis.set "foo", "bar"
  redis.incr "baz"
end

关于管道的更多的详细内容可以看官方文档的这篇文章pipelining

除此之外,值得提的是redis-railsredis-rack-cache等 gem 都是基于 redis-rb 来实现的。

3. redic

redic是一个轻量级的客户端,它是对hiredis这个 gem 的封装。而 hiredis 这个 gem 是 redis 的 c 客户端hiredis的 ruby 实现,它不像redis-rb可能是通过 socket 连接到 redis 服务器的,它是能过 C 语言头文件连接的,它是轻量级的,速度快,性能高。

要使用也是很简单。

redis = Redic.new

redis.call("SET", "foo", "bar")

redis = Redic.new是连接到 redis 服务器,之后通过 call 命令调用 redis 的 api。

它不像 redis-rb 那样,封装了很多能够像操作 redis 那样的方法,比如"expire"、"ttl"、"flushdb"等。

redic 都是通过 call 这个指令来调用 api 的,比如

redis.call("SUBSCRIBE", "foo")

还有,readthisost等 gem 都是基于 redic 实现的。

完结。

下一篇:Redis 学习笔记系列文章之 Redis 的图形化工具 (四)

本站文章均为原创内容,如需转载请注明出处,谢谢。

0 条回复
暂无回复~~
相关小书
redis入门与应用教程

redis入门与应用教程

redis从入门开始讲起,通过应用来深入理解redis

发表于

喜欢
统计信息
    学员: 29915
    视频数量: 1996
    文章数量: 526

© 汕尾市求知科技有限公司 | Rails365 Gitlab | 知乎 | b 站 | csdn

粤公网安备 44152102000088号粤公网安备 44152102000088号 | 粤ICP备19038915号

Top