Java使用memcached
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工具类:
- public class MemcachedUtil {
- /**
- * memcached客户端单例
- */
- private static MemCachedClient cachedClient = new MemCachedClient();
- /**
- * 初始化连接池
- */
- static {
- //获取连接池的实例
- SockIOPool pool = SockIOPool.getInstance();
- //服务器列表及其权重
- String[] servers = {"127.0.0.1:11211"};
- Integer[] weights = {3};
- //设置服务器信息
- pool.setServers(servers);
- pool.setWeights(weights);
- //设置初始连接数、最小连接数、最大连接数、最大处理时间
- pool.setInitConn(10);
- pool.setMinConn(10);
- pool.setMaxConn(1000);
- pool.setMaxIdle(1000*60*60);
- //设置连接池守护线程的睡眠时间
- pool.setMaintSleep(60);
- //设置TCP参数,连接超时
- pool.setNagle(false);
- pool.setSocketTO(60);
- pool.setSocketConnectTO(0);
- //初始化并启动连接池
- pool.initialize();
- //压缩设置,超过指定大小的都压缩
- // cachedClient.setCompressEnable(true);
- // cachedClient.setCompressThreshold(1024*1024);
- }
- private MemcachedUtil(){
- }
- public static boolean add(String key, Object value) {
- return cachedClient.add(key, value);
- }
- public static boolean add(String key, Object value, Integer expire) {
- return cachedClient.add(key, value, expire);
- }
- public static boolean put(String key, Object value) {
- return cachedClient.set(key, value);
- }
- public static boolean put(String key, Object value, Integer expire) {
- return cachedClient.set(key, value, expire);
- }
- public static boolean replace(String key, Object value) {
- return cachedClient.replace(key, value);
- }
- public static boolean replace(String key, Object value, Integer expire) {
- return cachedClient.replace(key, value, expire);
- }
- public static Object get(String key) {
- return cachedClient.get(key);
- }
- }
3. 创建需要缓存的对象:
- public class UserBean implements Serializable {
- private static final long serialVersionUID = 9174194101246733501L;
- private String username;
- private String password;
- public UserBean(String username, String password) {
- this.username = username;
- this.password = password;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result
- + ((password == null) ? 0 : password.hashCode());
- result = prime * result
- + ((username == null) ? 0 : username.hashCode());
- return result;
- }
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- UserBean other = (UserBean) obj;
- if (password == null) {
- if (other.password != null)
- return false;
- } else if (!password.equals(other.password))
- return false;
- if (username == null) {
- if (other.username != null)
- return false;
- } else if (!username.equals(other.username))
- return false;
- return true;
- }
- @Override
- public String toString() {
- return "username:" + username + ",password:" + password;
- }
- }
4.创建测试用例:
- public class MemcachedUtilTest {
- @Test
- public void testMemcached() {
- MemcachedUtil.put("hello", "world", 60);
- String hello = (String) MemcachedUtil.get("hello");
- Assert.assertEquals("world", hello);
- for(int i = 0; i < 10000000; ++i) {
- UserBean userBean = new UserBean("Jason" + i, "123456-" + i);
- MemcachedUtil.put("user" + i, userBean, 60);
- Object obj = MemcachedUtil.get("user" + i);
- Assert.assertEquals(userBean, obj);
- }
- }
- }
5.通过spring注入memcached:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
- <bean id="memcachedPool" class="com.danga.MemCached.SockIOPool"
- factory-method="getInstance" init-method="initialize">
- <constructor-arg>
- <value>neeaMemcachedPool</value>
- </constructor-arg>
- <property name="servers">
- <list>
- <value>127.0.0.1:11211</value>
- </list>
- </property>
- <property name="initConn">
- <value>20</value>
- </property>
- <property name="minConn">
- <value>10</value>
- </property>
- <property name="maxConn">
- <value>50</value>
- </property>
- <property name="nagle">
- <value>false</value>
- </property>
- <property name="socketTO">
- <value>3000</value>
- </property>
- </bean>
- <bean id="memcachedClient" class="com.danga.MemCached.MemCachedClient">
- <constructor-arg>
- <value>neeaMemcachedPool</value>
- </constructor-arg>
- </bean>
- </beans>
6.创建测试用例:
- public class MemcachedSpringTest {
- private MemCachedClient cachedClient;
- @Before
- public void init() {
- ApplicationContext context = new ClassPathXmlApplicationContext("com/loujinhe/config/beans.xml");
- cachedClient = (MemCachedClient)context.getBean("memcachedClient");
- }
- @Test
- public void testMemcachedSpring() {
- UserBean user = new UserBean("lou", "jason");
- cachedClient.set("user", user);
- UserBean cachedBean = (UserBean)user;
- Assert.assertEquals(user, cachedBean);
- }
- }
Java使用memcached的更多相关文章
- Java操作Memcached
本文复制其他播客,有好的技术文章希望各位大神能告知... 谢谢. 如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; import j ...
- memcached—Java操作Memcached实例
前面博客介绍了如何在Windows操作系统中安装Memcached,总结一下如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; imp ...
- php和java的memcached使用的兼容性问题解决过程
1. 背景: php 使用memcached客户端设置一个key,java使用java-memcached-client去读,报错如下: ERROR|com.whalin.MemCached.MemC ...
- Java操作memcached(一)
Memcached事实上,两次Hash算法 第一次hash算法被用于定位Memcached示例 第二次hash算法是底部HashMap中间hash算法 Hash算法 1.依据余数 ...
- java集成memcached、redis防止缓存穿透
下载相关jar,安装Memcached,安装教程:http://www.runoob.com/memcached/memcached-install.html spring配置memcached &l ...
- Java使用Memcached和Redis简单示例
package xmq.study.memcached; import java.io.IOException; import java.net.InetSocketAddress; import n ...
- Java连接Memcached进行CRUD
参考这篇博文在本机安装了Memcached 在 Java 中常用的memcached有三个: Memcached Client for Java SpyMemcached XMemcached 这里使 ...
- Java 连接 Memcached 服务
原文:http://www.runoob.com/memcached/java-memcached.html mac下安装和配置Memcached:http://www.pchou.info/open ...
- java中memcached
http://www.oschina.net/code/snippet_250396_9181
随机推荐
- Android_AutoCompleteTextView,MultiAutoCompleteTextView
XML布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:an ...
- BLOCKED和WAITING的区别
/** * Thread state for a thread blocked waiting for a monitor lock. * A thread in the blocked state ...
- [CSS][转载]内层div的margin-top影响外层div
参考 内层div的margin-top影响外层div——引出外边距合并 div嵌套导致子区域margin-top失效不起作用的解决方法 我使用的是在外层的div中添加 border: 1px soli ...
- [记录] js判断数组key是否存在
数组中判断key是否存在 可以通过arrayObject.hasOwnProperty(key)来进行判断数组key是否存在,返回的是boolean值,如果存在就返回true,不存在就返回false ...
- 【Slickflow学习】.NET开源工作流环境搭建(三)
第一次自己写博客文章,大家多多指教.写博客主要记录一下学习的过程,给初学者提供下参考,也留给自己做备忘. Slickflow .NET开源工作流-环境搭建 在VS2010中使用附加进程的方式调试IIS ...
- Windows服务定时运行,判断当前时间是否在配置时间段内
/// <summary> /// 判断程序是否在设置运行时间内 /// </summary> /// <param name="startTime" ...
- react ie10下报错
解决办法: 加 promise polyfill 参考地址:http://hao.jser.com/archive/12066/
- jsp(一) : servlet基础
1.客户 servlet容器 servlet 2.实现接口 #1.接口:servlet : constrontor .init().service.destroy ...
- 实现ios屏幕的横竖屏自适应
整理总结中... 刷新 可以通过 -setNeedsUpdateConstraints -layoutIfNeeded 两个方法来刷新约束的改变,使UIView重新布局, 和CoreGraphic的- ...
- jquery动态插入行
这是一个利用jquery动态插入输入内容的代码. html代码: <div title="分表2" class="ui-edit" style=" ...