SSDB 支持 Redis 协议!

ideawu 发布于 2014/01/26 14:17
阅读 1K+
收藏 3

终于, 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 客户端还没有测试, 欢迎大家使用并反馈.

原文链接: http://www.ideawu.net/blog/archives/771.html

加载中
0
fbbin
fbbin
赞一个!
i
ideawu
^_^
0
红星xx
红星xx
怎么没有 api 命令的介绍 。
0
i
ideawu

引用来自“红星xx”的答案

怎么没有 api 命令的介绍 。

Hi, 可以参考这个: http://www.ideawu.com/ssdb/docs/zh_cn/php/index.html

虽然是 PHP 的 API 文档, 但所有语言都是类似的.

0
玛雅牛
玛雅牛
支持啊。
0
LongRaindy
LongRaindy
哦椰,待我测试一下替换redis为SSDB的效果
LongRaindy
LongRaindy
@ideawu 好的,先谢过65
i
ideawu
欢迎测试, 到时反馈一下结果.
0
leon_lau
leon_lau
谁测试过jedis驱动?
0
云风来

不支持cluster指令。ERR Unknown Command: cluster。可以的话能增加cluster的支持吗

返回顶部
顶部