SSDB数据库使用手册
相关文章
更多最近更新
更多SSDB 网络协议请求和响应报文
2019-05-03 22:17|来源: 网路
SSDB 的网络协议超级简单!
报文
Packet := Block+ '\n' Block := Size '\n' Data '\n' Size := literal_integer Data := size_bytes_of_data
请求
Request := Cmd BlocksCmd := Block
请求命令包括: get, set, del, ...
响应
Response := Status BlockStatus := Block
响应状态码包括: ok, not_found, error, fail, client_error
示例
用 telnet 或者 nc 命令连接到 SSDB 服务器, 然后输入下面的代码(用最后一行空行结束):
3 get 3 key
你将看到类似这样的响应:
2 ok 3 val
高性能的 SSDB 协议解析器
#include <stdlib.h> #include <string.h> int len = buffer->size(); char ptr = buffer->data(); while(len > 0){ char data = (char *)memchr(ptr, '\n', len); if(data == NULL){ break; } data += 1; int num = data - ptr; if(num == 1 || (num == 2 && ptr[0] == '\r')){ // Packet received. return OK; } // Size received int size = (int)strtol(ptr, NULL, 10); len -= num + size; ptr += num + size; if(len >= 1 && ptr[0] = '\n'){ len -= 1; ptr += 1; }else if(len >= 2 && ptr[0] == '\r' && ptr[1] == '\n'){ len -= 2; ptr += 2; }else{ break; } // Data received }
给 SDK 开发者的建议: Data
可以包含任意字符, 包括 \r, \n, \0...
, 所以你不要认为 Data
里面不会出现这些字符.
相关问答
更多-
python怎么与ssdb进行交互[2022-04-19]
在centos 7上使用python3.5, 系统本身带有python2.7, 自己没有将默认的python从2.7链接为3.5。 然后安装python3使用的包: ssdb, 安装方式 pip3 install ssdb,或者 直接下载包源文件,进入文件内,安装 python3 setup.py install 。 -
SSDB 和 Redis 的优缺点各位哪些[2023-10-22]
优点:SSDB 对内存的需求小,是个较便宜的方案。 不差钱的话,Redis 在性能、稳定性和社区上都更加优秀 缺点:SSDB 实现很低效,主要是依赖 leveldb 会按 key 来排序的特性 Redis 测试时数据量小,只读写了内存的可能性 -
ssdb中文是什么意思[2022-08-02]
没有这个单词,根据您的拼写来看,考虑应是:stab. stab 英[stæb] 美[stæb] vt. 刺; 刺; 将…刺入; 对…做出刺或戳的动作; vi. 刺伤; 戳; 用或似用带尖的武器刺; n. 尝试; 用或似用带尖武器刺的伤口; 突发的一阵; [例句]Somebody stabbed him in the stomach 有人朝他肚子上捅了一刀。 [其他] 第三人称单数:stabs 复数:stabs 现在分词:stabbing过去式:stabbed 过去分词:stabbed -
Redis,SSDB,Memcache和MongoDB的区别[2023-04-29]
额,说一下个人意见:mongodb,一般用来存储比较大的数据,一般都是实时的,缓存成html没多大意义 memacahe 确实是缓存到内存的,但是不是一直在内存中,会通过机制存储到磁盘中,生成一个文档,可是设置隔多少时间存储一次 -
ssdb在window系统下怎么安装[2023-01-24]
return (Long) getHibernateTemplate().save(); 上面那个是Spring集成的hibernate。。。 如果是纯hibernate的话就是session.save(pojo)....返回的是一个Serializable的对象,可强转成Long或者Integer等封装类,需手动转换成基本类型如int,long等 -
为什么不直接使用leveldb ssdb[2022-04-26]
可以使用一些/etc/security/console.apps/目录下为用户配置的程序. 这个目录中包括允许控制台用户使用/sbin和/usr/sbin中的某些应用程序的配置文件. 这些配置文件和它们所设置的应用程序享有相同名称. 控制台用户可以使用的一组重要应用程序程序包括三个可以用来关闭或重新启动系统的程序: /sbin/halt /sbin/reboot /sbin/poweroff 因为这些都是支持PAM的应用程序,因此需要时都可以调用pam_console.so 模块. -
m.2接口的ssd,是不是代替了sata的ssd[2022-11-20]
这是一种趋势所在,可以用机械硬盘,希望可以帮到你 -
不可以。CREATE EXTERNAL DATA SOURCE的文档指定目标必须是RDBMS外部数据源的Azure SQL数据库: -- Elastic Database query only: a remote database on Azure SQL Database as data source -- (only on Azure SQL Database) CREATE EXTERNAL DATA SOURCE data_source_name WITH ( ...
-
为什么Windows系统不适用于Key / Value DB(生产模式)(Why Windows systems are not suitable(production mode) for Key/Value DB)[2021-12-14]
因为它们通常是在Linux / OSX上开发,优化,测试和主要使用的。 然而, Windows版本的Redis是一个高质量的端口,它只是通过所有ServiceStack.Redis测试套件的官方发行版的一个小版本点,因此如果您只能访问Windows服务器,那么它是Linux版本的合适替代品。 Because they're typically developed, optimized, tested and primarily used on Linux/OSX. However the Windows v ...