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的ruby客户端(三)的更多相关文章

  1. Redis的Python客户端redis-py的初步使用

    1. Redis的安装 sudo pip install redis sudo pip install hiredis Parser可以控制如何解析redis响应的内容.redis-py包含两个Par ...

  2. Redis 小白指南(三)- 事务、过期、消息通知、管道和优化内存空间

    Redis 小白指南(三)- 事务.过期.消息通知.管道和优化内存空间 简介 <Redis 小白指南(一)- 简介.安装.GUI 和 C# 驱动介绍> 讲的是 Redis 的介绍,以及如何 ...

  3. Redis实现之客户端

    客户端 Redis服务器是典型的一对多服务器程序:一个服务器可以与多个客户端建立网络连接,每个客户端可以向服务器发送命令请求,而服务器则接收并处理客户端发送的命令请求,并向客户端返回命令回复.通过使用 ...

  4. windows下安装,配置redis以及可视化客户端redisClient的安装及基本使用

    一. Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情 ...

  5. 【转载】Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍

    转载地址:http://blog.csdn.net/truong/article/details/46711045 关键字:Redis的Java客户端Jedis的八种调用方式(事务.管道.分布式…)介 ...

  6. Redis入门教程(三)— Java中操作Redis

    在Redis的官网上,我们可以看到Redis的Java客户端众多 其中,Jedis是Redis官方推荐,也是使用用户最多的Java客户端. 开始前的准备 使用jedis使用到的jedis-2.1.0. ...

  7. c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具

    c#实例化继承类,必须对被继承类的程序集做引用   0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...

  8. 扩展Redis的Jedis客户端,哨兵模式读请求走Slave集群

    原 扩展Redis的Jedis客户端,哨兵模式读请求走Slave集群 2018年12月06日 14:26:45 温故而知新666 阅读数 897   版权声明:本文为博主原创文章,遵循CC 4.0 b ...

  9. redis 服务器端安装(三)

    redis 服务器端安装(三) Redis is an open source, BSD licensed, advanced key-value store. It is often referre ...

随机推荐

  1. 怎么解决ORACLE 中 CHAR类型的索引问题

    在很多场景中,都有如下情况 trim(a.colunm1) = trim(b.colunm2) 应该怎么优化呢? 用到 TRIM 的很多原因是某些系统为了提高查询效率,不使用  ORACLE 的特有的 ...

  2. 扫目录过狗过waf方法

    用御剑的朋友都遇到过这个页面吧,装狗了开启保护就会这样 本机搭建安全狗设置发现,默认是过蜘蛛的,所以只要把http头来路改成蜘蛛的useragent就ok了 无奈御剑和wscan 都是无法设置http ...

  3. RTT第一个工程

    第一个RTT工程 1. 配置工程 选择芯片STM32F103C8(其包含该芯片的Flash及SRAM介绍): Jlink  SW模式 output->Debug info/Browse info ...

  4. jsp页面form表单提交时候乱码

    1.问题描述: 表单提交中文乱码问题,怎么解决 2.原因 当表单传输到服务器上时,服务器会将传输的数据进行编码(iso-8859-1),然后当我们从服务器上面取数据的时候,就会出现乱码 3.解决的方式 ...

  5. C++ 函数模板一(函数模板定义)

    //函数模板定义--数据类型做参数 #include<iostream> using namespace std; /* 函数模板声明 1.函数模板定义由模板说明和函数定义组成,并且一个模 ...

  6. 第二百三十六节,Bootstrap辅组类和响应式工具

    Bootstrap辅组类和响应式工具 学习要点: 1.辅组类 2.响应式工具 本节课我们主要学习一下 Bootstrap 的辅组类和响应式工具,辅助类提供了一组类来辅 组页面设计,而响应式工具则利用媒 ...

  7. Bootstrap打印问题

    删除bootstrap的样式引用,就可以正常打印预览了. bootstrap 设置了@media print相关属性导致 @media print { * { color: #000 !importa ...

  8. 【vijos】1764 Dual Matrices(dp)

    https://vijos.org/p/1764 自从心态好了很多后,做题的确很轻松. 这种题直接考虑我当前拿了一个,剩余空间最大能拿多少即可. 显然我们枚举每一个点拿出一个矩形(这个点作为右下角), ...

  9. 将socket5代理转换为http代理

    归根结底还是万恶的ZFW,MD弄得现在Google,gmail,dropbox都用不了了,看来这是要万民欢迎大中华局域网的到来了.最近在使用一同学的Shadowsocks来突破GFW的限制,可是电脑o ...

  10. flask配置加载几种方式

    方法一.直接配置 app.config['HOST']='xxx.a.com' print(app.config.get('HOST')) 方法二.通过环境变量加载配置 环境变量:export MyA ...