2013-01-23

SSDB 现在已经支持 Java 语言了!

Views: 35276 | 16 Comments

SSDB 现在已经支持 Java 语言了! 先看一个例子:

SSDB ssdb = new SSDB("127.0.0.1", 8888);
ssdb.set("a", "123");
byte[] val = ssdb.get("a");

SSDB Java 的 API 和 PHP, Cpy, Python 等动态脚本语言的 API 有很大不同, 首先 SSDB Java 用异常展示出错, 用 null 或者 Double.NaN 表示 not_found. 另外, 对于列表数据的结果, 返回的是 Response 结构.

具体使用的时候就知道了, API Doc 地址: http://www.ideawu.com/ssdb/java-doc/

Related posts:

  1. SSDB 的 C++ 客户端接口
  2. SSDB 支持 TTL 过期机制
  3. SSDB 已经迁移到 github
  4. SSDB 支持 Snappy 压缩了
  5. SSDB 采用里程碑式版本发布机制
Posted by ideawu at 2013-01-23 22:45:40 Tags: ,

16 Responses to "SSDB 现在已经支持 Java 语言了!"

  • 请问下:
    我有一个javaweb的项目需要用到ssdb去做数据存储,那么就面对一个问题:
    前台每次请求过来我都要调用下get方法判断某个键下面是否有值,没有的话再set一个;
    然后在这一系列操作指定完之后我是否要去执行close()关闭链接呢?
    因为是一个web项目,需要长期运行在线上,所以我很难拿捏何时去close()一个db链接,劳烦作者能提供一个建议,是否有必要每次动作执行完毕都去执行close(这样在高并发时开销大不大),还是说有某一种机制可以让它自动关闭链接 Reply
  • 你好,我试着用java连接虚拟机上的ssdb,ssdb数据库是刚装的(空的),使用下载的Demo的时候,报错如下,array数组越界?不知道怎么解决
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
    at java.lang.System.arraycopy(Native Method)
    at main.java.com.udpwork.ssdb.MemoryStream.write(MemoryStream.java:108)
    at main.java.com.udpwork.ssdb.Link.recv(Link.java:92)
    at main.java.com.udpwork.ssdb.Link.request(Link.java:71)
    at main.java.com.udpwork.ssdb.Link.request(Link.java:51)
    at main.java.com.udpwork.ssdb.SSDB.request(SSDB.java:36)
    at demo.java.Demo.main(Demo.java:16)

    源码就是在网上下载的javassdb-master 如下:
    package demo.java;
    import main.java.com.udpwork.ssdb.*;

    /**
    * SSDB Java client SDK demo.
    */
    public class Demo {
    public static void main(String[] args) throws Exception {
    SSDB ssdb = null;
    Response resp;
    byte[] b;
    ssdb = new SSDB("192.168.124.1", 139);
    System.out.println("—- connected —–");


    resp = ssdb.request("qpush", "q", "a");
    for(int i=1; i<resp.raw.size(); i+=2){
    String s = new String(resp.raw.get(i));
    System.out.println(s);
    } Reply
  • 就是我用java client, 跑5个程序, 他就会出现Read timed out, 我用的是Runnable, run方法里面也重新new ssdb实例, 是因为我的服务器太差了的原因, (服务器配置:1G 内存, 2G swap, CPU E5-2670 v2 @ 2.50GHz) Reply
  • java ssdb 不能设置 失效时间嘛 ? set Reply
  • 这个应该是官方的Java Client吧
    https://github.com/ssdb/javassdb

    另外,推荐一个第三方的SSDB的Java Client
    https://github.com/nutzam/ssdb4j/ Reply
  • 博主,你好:

    在stable-1.6.8.8 中没有看到java API就用stable-1.6.8.6中的, 少量测试没有发现异常,大量测试之后,发现有时候会报错:

    java.lang.NumberFormatException: For input string: "headers"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.parseInt(Integer.java:527)
    at db.ssdb.Link.parse(Link.java:121)
    at db.ssdb.Link.recv(Link.java:88)
    at db.ssdb.Link.request(Link.java:73)
    at db.ssdb.Link.request(Link.java:45)
    at db.ssdb.SSDB.hset(SSDB.java:134)
    at db.ssdb.SSDB.hset(SSDB.java:142)

    说明: 我的代码: ssdb.hset(url_hash, "headers", headers);

    这里的headers是gzip压缩过的http请求头(http请求头结束符:\r\n\r\n)
    不知道是我保存的数据的问题还是? Reply
    @scofier: 请给出详细的可复现的代码和操作步骤, 谢谢. Reply
  • SSDB支持只打开一个客户端,多个线程吗?为什么我在进行多线程操作的时候,设置了多个线程,结果SSDB却只有一个链接,最终导致多个线程发送和接收的数据混在一起了,多线程一运行就报错。 Reply
    @fanqie: SSDB 类不支持多线程. 如果是多线程, 你可以每个线程创建一个 SSDB 实例. Reply
  • 啥时候有连接池机制啊? Reply
  • 这个不错
    Java客户端有没有计划实现连接池机制呢? Reply
  • jar包在哪呢, 怎么只有文档 Reply
    @qq: 你好, 没有jar包, 直接使用源码, 在 api/java 目录下. Reply
    @ideawu: 在api目录下的确没有java。不管是从master、dev分支,还是tag中都没有。 Reply
    @ideawu:你好,在api的目录下没有java目录,只有php,phyon,cpp,cpy和README.md Reply

« [1][2] » 1/2

Leave a Comment