1.加载commons-pool-1.5.6.jar、java_memcached-release_2.6.6.jar、slf4j-api-1.6.1.jar、slf4j-simple-1.6.1.jar

2.创建memcached工具类:

  1. public class MemcachedUtil {
  2. /**
  3. * memcached客户端单例
  4. */
  5. private static MemCachedClient cachedClient = new MemCachedClient();
  6. /**
  7. * 初始化连接池
  8. */
  9. static {
  10. //获取连接池的实例
  11. SockIOPool pool = SockIOPool.getInstance();
  12. //服务器列表及其权重
  13. String[] servers = {"127.0.0.1:11211"};
  14. Integer[] weights = {3};
  15. //设置服务器信息
  16. pool.setServers(servers);
  17. pool.setWeights(weights);
  18. //设置初始连接数、最小连接数、最大连接数、最大处理时间
  19. pool.setInitConn(10);
  20. pool.setMinConn(10);
  21. pool.setMaxConn(1000);
  22. pool.setMaxIdle(1000*60*60);
  23. //设置连接池守护线程的睡眠时间
  24. pool.setMaintSleep(60);
  25. //设置TCP参数,连接超时
  26. pool.setNagle(false);
  27. pool.setSocketTO(60);
  28. pool.setSocketConnectTO(0);
  29. //初始化并启动连接池
  30. pool.initialize();
  31. //压缩设置,超过指定大小的都压缩
  32. //      cachedClient.setCompressEnable(true);
  33. //      cachedClient.setCompressThreshold(1024*1024);
  34. }
  35. private MemcachedUtil(){
  36. }
  37. public static boolean add(String key, Object value) {
  38. return cachedClient.add(key, value);
  39. }
  40. public static boolean add(String key, Object value, Integer expire) {
  41. return cachedClient.add(key, value, expire);
  42. }
  43. public static boolean put(String key, Object value) {
  44. return cachedClient.set(key, value);
  45. }
  46. public static boolean put(String key, Object value, Integer expire) {
  47. return cachedClient.set(key, value, expire);
  48. }
  49. public static boolean replace(String key, Object value) {
  50. return cachedClient.replace(key, value);
  51. }
  52. public static boolean replace(String key, Object value, Integer expire) {
  53. return cachedClient.replace(key, value, expire);
  54. }
  55. public static Object get(String key) {
  56. return cachedClient.get(key);
  57. }
  58. }

3. 创建需要缓存的对象:

  1. public class UserBean implements Serializable {
  2. private static final long serialVersionUID = 9174194101246733501L;
  3. private String username;
  4. private String password;
  5. public UserBean(String username, String password) {
  6. this.username = username;
  7. this.password = password;
  8. }
  9. public String getUsername() {
  10. return username;
  11. }
  12. public void setUsername(String username) {
  13. this.username = username;
  14. }
  15. public String getPassword() {
  16. return password;
  17. }
  18. public void setPassword(String password) {
  19. this.password = password;
  20. }
  21. @Override
  22. public int hashCode() {
  23. final int prime = 31;
  24. int result = 1;
  25. result = prime * result
  26. + ((password == null) ? 0 : password.hashCode());
  27. result = prime * result
  28. + ((username == null) ? 0 : username.hashCode());
  29. return result;
  30. }
  31. @Override
  32. public boolean equals(Object obj) {
  33. if (this == obj)
  34. return true;
  35. if (obj == null)
  36. return false;
  37. if (getClass() != obj.getClass())
  38. return false;
  39. UserBean other = (UserBean) obj;
  40. if (password == null) {
  41. if (other.password != null)
  42. return false;
  43. } else if (!password.equals(other.password))
  44. return false;
  45. if (username == null) {
  46. if (other.username != null)
  47. return false;
  48. } else if (!username.equals(other.username))
  49. return false;
  50. return true;
  51. }
  52. @Override
  53. public String toString() {
  54. return "username:" + username + ",password:" + password;
  55. }
  56. }

4.创建测试用例:

  1. public class MemcachedUtilTest {
  2. @Test
  3. public void testMemcached() {
  4. MemcachedUtil.put("hello", "world", 60);
  5. String hello = (String) MemcachedUtil.get("hello");
  6. Assert.assertEquals("world", hello);
  7. for(int i = 0; i < 10000000; ++i) {
  8. UserBean userBean = new UserBean("Jason" + i, "123456-" + i);
  9. MemcachedUtil.put("user" + i, userBean, 60);
  10. Object obj = MemcachedUtil.get("user" + i);
  11. Assert.assertEquals(userBean, obj);
  12. }
  13. }
  14. }

5.通过spring注入memcached:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <bean id="memcachedPool" class="com.danga.MemCached.SockIOPool"
  7. factory-method="getInstance" init-method="initialize">
  8. <constructor-arg>
  9. <value>neeaMemcachedPool</value>
  10. </constructor-arg>
  11. <property name="servers">
  12. <list>
  13. <value>127.0.0.1:11211</value>
  14. </list>
  15. </property>
  16. <property name="initConn">
  17. <value>20</value>
  18. </property>
  19. <property name="minConn">
  20. <value>10</value>
  21. </property>
  22. <property name="maxConn">
  23. <value>50</value>
  24. </property>
  25. <property name="nagle">
  26. <value>false</value>
  27. </property>
  28. <property name="socketTO">
  29. <value>3000</value>
  30. </property>
  31. </bean>
  32. <bean id="memcachedClient" class="com.danga.MemCached.MemCachedClient">
  33. <constructor-arg>
  34. <value>neeaMemcachedPool</value>
  35. </constructor-arg>
  36. </bean>
  37. </beans>

6.创建测试用例:

    1. public class MemcachedSpringTest {
    2. private MemCachedClient cachedClient;
    3. @Before
    4. public void init() {
    5. ApplicationContext context = new ClassPathXmlApplicationContext("com/loujinhe/config/beans.xml");
    6. cachedClient = (MemCachedClient)context.getBean("memcachedClient");
    7. }
    8. @Test
    9. public void testMemcachedSpring() {
    10. UserBean user = new UserBean("lou", "jason");
    11. cachedClient.set("user", user);
    12. UserBean cachedBean = (UserBean)user;
    13. Assert.assertEquals(user, cachedBean);
    14. }
    15. }

Java使用memcached的更多相关文章

  1. Java操作Memcached

    本文复制其他播客,有好的技术文章希望各位大神能告知... 谢谢. 如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; import j ...

  2. memcached—Java操作Memcached实例

    前面博客介绍了如何在Windows操作系统中安装Memcached,总结一下如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; imp ...

  3. php和java的memcached使用的兼容性问题解决过程

    1. 背景: php 使用memcached客户端设置一个key,java使用java-memcached-client去读,报错如下: ERROR|com.whalin.MemCached.MemC ...

  4. Java操作memcached(一)

    Memcached事实上,两次Hash算法    第一次hash算法被用于定位Memcached示例    第二次hash算法是底部HashMap中间hash算法 Hash算法      1.依据余数 ...

  5. java集成memcached、redis防止缓存穿透

    下载相关jar,安装Memcached,安装教程:http://www.runoob.com/memcached/memcached-install.html spring配置memcached &l ...

  6. Java使用Memcached和Redis简单示例

    package xmq.study.memcached; import java.io.IOException; import java.net.InetSocketAddress; import n ...

  7. Java连接Memcached进行CRUD

    参考这篇博文在本机安装了Memcached 在 Java 中常用的memcached有三个: Memcached Client for Java SpyMemcached XMemcached 这里使 ...

  8. Java 连接 Memcached 服务

    原文:http://www.runoob.com/memcached/java-memcached.html mac下安装和配置Memcached:http://www.pchou.info/open ...

  9. java中memcached

    http://www.oschina.net/code/snippet_250396_9181

随机推荐

  1. SVN 之 去掉SVN管理标记

    当项目不需要SVN标志的时候, 方式一:很多人设置Windows显示隐藏文件,然后将项目中的所有.svn文件删除,这种方法是最笨的方法. 方式二:通过注册表方式 [1]新建一个文本文件.文本的内容为: ...

  2. Android(java)学习笔记133:ListViewProject案例(ListView + BaseAdapter + CheckBox)

    这个案例可能稍微复杂一点,我会讲述详细一点: 1.首先是AndroidManifest.xml: <?xml version="1.0" encoding="utf ...

  3. Android_listView

    package com.example.app5; import java.util.ArrayList; import java.util.HashMap; import java.util.Lis ...

  4. Linux下安装MATLAB的一些注意事项

    1,下载matlab的linux版本. matlab2012a的种子文件, Matlab_Unix_2012a.torrent 我是在window机子上下载了MATLAB的Linux版本. 2,把MA ...

  5. [记录] javascript 对象中使用setTimeout

    参考:Javascript对象中关于setTimeout和setInterval的this介绍 使用最后一个方法终于弄好了,简直了,在对象中使用setTimeout原来是这样的 做的是分钟倒计时,倒数 ...

  6. php 首页定时生成静态页面

    往往首页的js,商务通代码加的太多,导致页面访问速度变慢,可以把首页有动态变为静态进行访问,访问速度会有所提升,不过如果更新首页数据,并不能及时更新,而是你规定的时间内固定更新一次 代码如下: < ...

  7. angularjs的一些优化小技巧

    尽可能少调用 ng-repeat ng-repeat默认会创建很多监听器,所以在数据量很大的时候,这个非常消耗页面性能,我觉的只有在当需要经常更新数据列表的时候才需要用ng-repeat,要不然放那么 ...

  8. Activiti源码分析(框架、核心类。。。)

    http://jiangwenfeng762.iteye.com/blog/1338553 Activiti是业界很流行的java工作流引擎,关于Activiti与JBPM5的关系和如何选择不是本文要 ...

  9. hdoj1584 蜘蛛牌 (区间型动态规划)

    hdoj1584 分析: f[i][j] 表示 把一串牌 牌 i 到 j 摞为一摞时 所花费最少的步数. d[i][j] 表示把牌 i 挪到牌 j 上时需要走的步数(最初给的状态). 以一串牌 3~8 ...

  10. python备份脚本

    备份制定文件到指定目录下,文件名以当前时间 思路: 1.指定备份的文件或目录 2.指定备份的目标路径 3.压缩备份名是当前日期和时间 4.使用标准的压缩命令 1.最简单的以日期时间为文件名 2.以日期 ...