使用memcached 转载 http://blog.csdn.net/loujinhe/article/details/8491673
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过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。 首先,要连接到Memcached服务器,你需要一个Java客户端库。常见的有spymemcached和XMemcached。这里我们以spymemcached为例,因为它是社区中广泛使用...
为了在Java项目中使用Memcached,我们需要引入一个客户端库。在这里,我们选择使用SpyMemcached作为客户端。首先,在Maven项目的`pom.xml`文件中添加以下依赖: ```xml <groupId>net.spy</groupId> <artifactId>...
本文将详细解析如何在Java项目中使用Memcached,包括其配置方法以及一个具体的示例代码,旨在帮助开发者深入理解并掌握这一技术。 ### 一、Memcached简介 Memcached是一种开源的高性能内存键值存储系统,主要用于...
“memcached安装及java应用使用memcached”这一标题暗示了我们要讨论的是一个关于分布式内存缓存系统——memcached的安装过程以及如何在Java应用程序中使用它。Memcached是一个高性能、轻量级的分布式内存对象缓存...
在Java开发中,使用Memcached通常需要通过Java客户端库来与服务器端通信。这些客户端库提供了简单的API接口,使得开发者能够方便地进行缓存操作。例如,Java中常用的Memcached客户端有spymemcached、xmemcached等,...
下面我们将详细探讨如何在Java中使用Memcached以及相关知识点。 首先,我们需要引入一个Java库来与Memcached通信,例如spymemcached或xmemcached。这两个库提供了Java客户端,方便我们进行API调用。这里以...
以上就是Memcached在Java环境中的基本使用方法。为了实现更高效、安全的缓存策略,你可以进一步研究Memcached的特性,如CAS(Compare and Swap)操作、持久化、分布式哈希等。同时,了解如何在大型分布式系统中优化...
同时,提供的内容包括了Memcached的安装文件、相关的jar包、以及使用文档(doc文件),这为开发者提供了一站式的解决方案,能够快速在Java项目中集成并使用Memcached。 具体知识点如下: 1. **Memcached基础**:...
Memcached支持设置过期时间,如上面的`set`方法中的第二个参数。过期后的数据会自动从缓存中移除。 7. **高级功能** - 并行操作:可以批量操作多个键,提高性能。 - 哈希映射:对于复杂的数据结构,可以使用哈希...
为了在Java项目中使用Java Memcached客户端,开发者需要按照以下步骤操作: 1. 解压下载的zip文件,找到并添加jar包到项目类路径。 2. 引入必要的库依赖,例如net.spy.memcached包。 3. 创建Memcached客户端实例,...
接下来,"使用方法.doc"是一个详细指南,里面可能包含如何在Java项目中集成和使用这些文件的步骤。通常,这份文档会指导你如何配置Java Memcached客户端,如何连接到运行的Memcached服务,以及如何进行基本的缓存...
3. **Java Memcached客户端**:`java_memcached-release_2.6.6`是Java的Memcached客户端库,包含了与Memcached服务器交互所需的方法。开发人员会使用这个库编写Java代码,实现设置和获取缓存值的接口。 4. **设置和...
使用memcache分布式数据系统减轻数据库的压力,使用memcache的版本的是java_memcached-release_2.5.3.jar
- 在Java项目中,我们通常使用第三方库如spymemcached或xmemcached来与Memcached通信。这两个库提供了简单的API,使得与Memcached的交互变得容易。在这个例子中,我们将使用spymemcached,因为它相对轻量级且易于...
在Java Memcached客户端中,它用于管理连接池,即高效地重复使用已经创建的对象,而不是每次需要时都创建新的对象,这可以显著提高性能并减少系统资源的消耗。 2. **java_memcached-release_2.6.3.jar**:这是Java ...
【描述】:本文主要探讨了Memcached作为缓存系统在Java项目中的使用,包括其在缓解数据库压力、分布式应用以及安全性方面的策略。 【标签】:memcached,java 【正文】: Memcached是一款高性能的分布式内存对象...
这个“java_memcached-release_2.6.6.rar”压缩包文件包含了用于与Memcached服务器通信的Java库,使得Java开发者能够便捷地集成Memcached到他们的应用中。 Memcached是一个分布式内存对象缓存系统,最初由Danga ...
Java Memcached是一个基于Java语言的Memcached客户端库,它允许Java开发者轻松地与...通过深入研究这个项目,开发者可以更好地了解Java Memcached库的用法,并将其应用到自己的项目中,提升系统的缓存能力和响应速度。
Java Memcached是一个基于Java的Memcached客户端库,用于在Java应用程序中与Memcached缓存系统进行交互。在标题和描述中提到的`...开发者需要理解如何配置和使用这些组件,以便将Memcached的优势融入到他们的项目中。
描述中提到"关于memcache 使用的 客户端是memcached client for java 的 JAVA工程",这意味着这个压缩包可能包含了一个Java项目,该项目专门设计用来连接并操作memcached服务器。Java客户端库允许开发人员在Java应用...