文档章节

xmemcached的使用以及与spring的整合

菜蚜
 菜蚜
发布于 2014/12/16 20:31
字数 495
阅读 934
收藏 3

memcache:http://memcached.org/

github地址:https://github.com/killme2008/xmemcached

其他客户端:

https://code.google.com/archive/p/spymemcached/

http://github.com/gwhalin/Memcached-Java-Client

我本地安装了个windows版的memcached客户端,并添加为windows服务。

添加maven包:

    <dependency>
      <groupId>com.googlecode.xmemcached</groupId>
      <artifactId>xmemcached</artifactId>
      <version>2.0.0</version>
    </dependency>

做个简单的testcase:

package com.raycloud.maijia.schedule.utils;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.XMemcachedClient;
import net.rubyeye.xmemcached.exception.MemcachedException;

import org.junit.Test;

public class TestMemcached {
    
    @Test
    public void testIt(){
        try {
            MemcachedClient client = new XMemcachedClient("127.0.0.1", 11556);
            String testVal = "this is a test demo.";
            client.set("test_key", 10, testVal);
            Thread.sleep(5000);
            System.out.println("=================" + client.get("test_key"));
            Thread.sleep(15000);
            System.out.println("=================" + client.get("test_key"));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (TimeoutException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MemcachedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    
}

输出结果:

13:51:57.904 [Xmemcached-Reactor-2] DEBUG c.g.c.y.core.impl.AbstractSession - read 64 bytes from channel
=================this is a test demo.
13:52:02.906 [Xmemcached-Reactor-2] DEBUG n.r.xmemcached.impl.MemcachedHandler - Check session (%s) is alive,send heartbeat
13:52:02.907 [Xmemcached-Reactor-2] DEBUG c.g.c.y.core.impl.AbstractSession - After encodingversion

13:52:02.908 [Xmemcached-Reactor-2] DEBUG n.rubyeye.xmemcached.impl.Optimizer - Optimieze merge buffer:version

13:52:02.908 [Xmemcached-Reactor-2] DEBUG c.g.c.y.core.impl.AbstractSession - send buffers:
[
 buffer:position=0,limit=9,capacity=9
]
13:52:02.910 [Xmemcached-Reactor-2] DEBUG c.g.c.y.core.impl.AbstractSession - read 16 bytes from channel
13:52:07.911 [Xmemcached-Reactor-2] DEBUG n.r.xmemcached.impl.MemcachedHandler - Check session (%s) is alive,send heartbeat
13:52:07.912 [Xmemcached-Reactor-2] DEBUG c.g.c.y.core.impl.AbstractSession - After encodingversion

13:52:07.912 [Xmemcached-Reactor-2] DEBUG n.rubyeye.xmemcached.impl.Optimizer - Optimieze merge buffer:version

13:52:07.912 [Xmemcached-Reactor-2] DEBUG c.g.c.y.core.impl.AbstractSession - send buffers:
[
 buffer:position=0,limit=9,capacity=9
]
13:52:07.924 [Xmemcached-Reactor-2] DEBUG c.g.c.y.core.impl.AbstractSession - read 16 bytes from channel
13:52:12.906 [main] DEBUG c.g.c.y.core.impl.AbstractSession - After encodingget test_key

13:52:12.907 [Xmemcached-Reactor-2] DEBUG n.rubyeye.xmemcached.impl.Optimizer - Optimieze merge buffer:get test_key

13:52:12.908 [Xmemcached-Reactor-2] DEBUG c.g.c.y.core.impl.AbstractSession - send buffers:
[
 buffer:position=0,limit=14,capacity=14
]
13:52:12.909 [Xmemcached-Reactor-2] DEBUG c.g.c.y.core.impl.AbstractSession - read 5 bytes from channel
=================null

spring配置:

    <bean name="memcachedClient" class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean" destroy-method="shutdown">
        <property name="servers">
            <value>${memcached.url}</value>
        </property>
        <property name="commandFactory">
            <bean class="net.rubyeye.xmemcached.command.BinaryCommandFactory"></bean>
        </property>
    </bean>

此处注意对象的比较和变量的比较

其他:

memcached客户端集群,以及使用repcached补丁实现主从复制:

http://sourceforge.net/projects/repcached/

还可以使用代理服务:http://code.google.com/p/memagent/

常见问题:

一、net.rubyeye.xmemcached.exception.MemcachedException: Binary protocol doesn't support iterating all keys in memcached

二进制协议不支持遍历key,文本协议支持(memcache不建议遍历key,后续版本可能会下线)

KeyIterator it = memcachedClient.getKeyIterator(new
        InetSocketAddress("127.0.0.1", 11556));
while(it.hasNext()){
    String key = it.next();
    logger.info("=========key========" + key);
}


© 著作权归作者所有

共有 人打赏支持
上一篇: maven使用笔记
下一篇: solr DIH错误集锦
菜蚜
粉丝 28
博文 79
码字总数 38318
作品 0
杭州
程序员
私信 提问
加载中

评论(3)

zzuqiang
zzuqiang

引用来自“菜蚜”的评论

引用来自“zzuqiang”的评论

我这几天也在搞这一块儿^_^如有时间可以讨论讨论XMemcached

好的13
今天又被XMemcached序列化和反序列化的问题搞了一上午、memcached客户端在我pc安装、我在本机测试和三个同事测试都没问题、其中一个同事测试向memcached放入对象没有问题、取对象就报错误、哎……头痛中呀。
菜蚜
菜蚜

引用来自“zzuqiang”的评论

我这几天也在搞这一块儿^_^如有时间可以讨论讨论XMemcached

好的13
zzuqiang
zzuqiang
我这几天也在搞这一块儿^_^如有时间可以讨论讨论XMemcached
怎么关闭XMemcached在控制台打印的心跳哟?

用了Xmemcached之后,在控制台里面一直打印 [Xmemcached-Reactor-2] com.google.code.yanf4j.nio.impl.NioTCPSession.readFromBuffer(223) | read 15 bytes from channel 这样的信息,这个应......

Leaybc
2015/06/01
1K
2
Xmemcached异常超时:Timed out waiting for operation

Hi: XMemcached版本:1.4.3 使用spring管理,创建连接时使用MemcachedClientBuilder。 查询时:client.get(searchPkgNameList, 5); 其中searchPkgNameList会很大,一次大概有300个key。 异常...

黑豆白
2014/04/25
7.3K
3
Xmemcached 2.0 发布,高性能Java memcached客户端

高性能Java memcached客户端——Xmemcached发布2.0.0版本,主要改进如下: 性能优化,在测试中文本协议实现有接近10%的性能提升。 批量获取key如果包含相同的key,会缓存反序列化后的对象,减...

dennis_zhuang
2014/04/28
6.7K
5
spring集成xmemcached

spring集成xmemcached <dependency> <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" </beans>......

石头哥哥
2013/07/08
0
0
Xmemcached 1.2.5 发布 - 下载

Xmemcached是基于java nio实现的高性能可扩展的memcached客户端。 该版本主要改进内容: 1、合并yanf4j到xmemcached,从1.2.5开始,xmemcached不再依赖yanf4j,仅依赖slf4j。 2、支持SASL验证...

红薯
2010/06/23
673
0

没有更多内容

加载失败,请刷新页面

加载更多

如何开发一款以太坊(安卓)钱包系列2 - 导入账号及账号管理

这是如何开发一款以太坊(安卓)钱包系列第2篇,如何导入账号。有时用户可能已经有一个账号,这篇文章接来介绍下,如何实现导入用户已经存在的账号。 导入账号预备知识 从用户需求上来讲,导...

Tiny熊
今天
2
0
intellJ IDEA搭建java+selenium自动化环境(maven,selenium,testng)

1.安装jdk1.8; 2.安装intellJ; 3.安装maven; 3.1 如果是单前用户,配置用户环境变量即可,如果是多用户,则需配置系统环境变量,变量名为MAVEN_HOME,赋值D:\Application\maven,往path中...

不最醉不龟归
今天
4
0
聊聊ShenandoahGC的Brooks Pointers

序 本文主要研究一下ShenandoahGC的Brooks Pointers Shenandoah Shenandoah面向low-pause-time的垃圾收集器,它的GC cycle主要有 Snapshot-at-the-beginning concurrent mark包括Init Mark(P......

go4it
昨天
4
0
Makefile通用编写规则

#简单实用的Makefile模板: objs := a.o b.o test:$(objs) gcc -o test $^ # .a.o.d .b.o.d dep_files := $(foreach f,$(objs),.$(f).d) dep_files := $(wildcard $(dep_files)) ifneq ($(d......

shzwork
昨天
3
0
《万历十五年》的读后感作文4000字

《万历十五年》的读后感作文4000字: 万历十五年,即1587年,距今已过去432年。在明朝276的历史中,这一年很平淡,并没有什么特别之处。黄仁宇的《万历十五年》一书,有别于其他的历史叙述方...

原创小博客
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部