2013-12-31

SSDB 支持 Redis 协议!

Views: 51814 | 67 Comments

终于, SSDB 支持 Redis 协议了! 这表示, 你可以用目前所有成熟的 Redis 客户端来连接 SSDB 服务器, 包括 hiredis, phpredis, redigo 等等.

SSDB 支持 Redis 网络协议, 既是一个技术问题, 也有技术之外的考虑.

首先, Redis 的网络协议对手工输入不够友好. 它采用的是前置长度(块数量)信息的报文格式, 这种数据格式是比较原始的 Linux 配置文件的格式. 相比较, SSDB 采用的是类似 HTTP 报头与报体分隔的方式 - 空白行, 这种方式在输入的时候十分自然, 按两次回车表示请求结束, 并且和响应的输出也能在视觉上分开.

其次, Redis 的网络协议不干净, 也就是不透明. Redis 将报文分为请求和响应两种, 如果仅有这两种, 那也就算了. 要命的是, 它的响应竟然分了5种类型, 导致协议的实现者要做许多的 if-else 判断. 在实现 Redis 协议的过程, 发现这种划分根本没有任何实际意义, 还不如改成统一协议(unified protocol).

所以, SSDB 的网络协议在设计过程中避免了这些繁琐的细节. 这种设计的结果是, 即使用 C 语言来实现一个 SSDB 协议的解析器, 也只有区区不到 100 行代码!

另外, SSDB 在以前不支持 Redis 协议, 也是因为两者实现的原理不同, 有些操作是无法共通的.

最近在 3W 咖啡和大家交流时, 大家纷纷表示希望 SSDB 能支持 Redis 协议, 以便能降低他们试用 SSDB 的门坎. 从这个角度来看, SSDB 确实应该支持 Redis 协议. 所以, SSDB 就支持 Redis 协议了!

当然, 不是所有的命令都支持, 完整的列表见这里: http://www.ideawu.com/ssdb/docs/zh_cn/redis-to-ssdb.html

目前, redis-cli 和 phpredis 已经经过测试, 其它的语言和 Redis 客户端还没有测试, 欢迎大家使用并反馈.

Related posts:

  1. 性能超越 Redis 的 NoSQL 数据库 SSDB
  2. 从 Redis 迁移到 SSDB
  3. 使用 Twemproxy 来做 SSDB 负载均衡
  4. SSDB 采用里程碑式版本发布机制
  5. SSDB 增加了 Compaction 限速功能
Posted by ideawu at 2013-12-31 00:37:38 Tags:

67 Responses to "SSDB 支持 Redis 协议!"

« [1][2][3] » 3/3

Leave a Comment