开发者社区> 问答> 正文

Tair 客户端问题


##TairOperatorImpl 执行write 与 get 代码如下  
    public boolean write(Serializable key,Serializable value){
        ResultCode rc = tairManager.put(namespace,key,value);
        if(rc.isSuccess()){
            return true;
        }else {
            return false;
        }
    }

    public DataEntry get(Serializable key){
        Result<DataEntry> result = tairManager.get(namespace,key);
        if(result.isSuccess()){
            DataEntry entry = result.getValue();
            return entry;
        }
        else {
            return null;
        }
    }

测试代码如下,其中 stringDoubleConcurrentHashMap 为一个预先添加好了数据的 ConcurrentHashMap<String, Double>();

下面代码执行的结果是第一个for 循环的get 操作能够获得数据(但是version 永远是1 ),但是第二个for 循环的get 操作永远也获得不到数据。

    private void testIsStringExpire(){
        System.out.println("将测试使用String 为key 的时候数据是否会失效");
        for(Map.Entry<String,Double> entry: stringDoubleConcurrentHashMap.entrySet()){
            System.out.println("当前的key 值是" + entry.getKey());

            boolean success = tairOperator.write(entry.getKey(),entry.getValue());
            System.out.println("插入的状态是: ");
            System.out.println(success);
            DataEntry entry1 = tairOperator.get(entry.getKey());
            System.out.println("插入的时候获得的value 值是");
            System.out.println(entry1.toString());
        }
        for(Map.Entry<String,Double> entry:stringDoubleConcurrentHashMap.entrySet()){
            System.out.println("获得: key : "+ entry.getKey()+ "的值");
            DataEntry entry1 = tairOperator.get(entry.getKey());
            if(entry1== null){
                System.out.println("同样没有获得到key值的value 值");
            }else {
                System.out.println(entry.toString());
            }
        }
    }

第一次for循环结果
插入的状态是:
true
插入的时候获得的value 值是
key: prefix61, value: 61.0, version: 1
    cdate: 1970-01-01 08:00:00
    mdate: 2016-06-11 11:49:51
    edate: NEVER

第二次for 循环结果

获得: key : prefix99的值
同样没有获得到key值的value 值

展开
收起
wxybupt 2016-06-11 11:54:56 5230 0
2 条回答
写回答
取消 提交回答
  • ReTair 客户端问题
    谢谢,看了下文档,我的问题解决了。


    原因特别蠢,使用为客户端 TairNamespace 让我设置成1 了。



    -------------------------

    回 1楼浅墨的帖子
    谢谢!
    2016-06-13 22:01:46
    赞同 展开评论 打赏
  • 三尺微命 一介书生
    首先请确保你写入的namespace有足够的内存配额,修改配额的方法见论坛的tair安装帖子,红色标题的那个。另外读取失败请打出错误信息,比如get失败了就打出result.getRc() 的信息。
    2016-06-13 19:48:07
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
阿里云Redis企业版Tair持久存储系列技术解读 立即下载
阿里云Redis企业版Tair持久存储系列产品详解 立即下载
阿里云内存数据库Tair 立即下载