Java代码:
package com.itspace.thirdTechnology.memcached; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * Created by yun_lian on 2016/7/13. * 连接memcached服务端 */ @Component public class MemCacheServer { /** * 创建一个 memcached 客户端对象 */ private static MemCachedClient client = new MemCachedClient(); /** * memcache服务端 */ private static MemCacheServer memCacheServer = new MemCacheServer(); // 创建 memcached连接池 static { System.err.println("~~~~~~~~~~~~~~~~~~~~~初始化内地测试缓存链接~~~~~~~~~~~~~~~~~~~~~~~"); // String[] addr = {"192.168.199.149:11211"};// 指定memcached服务地址 // String[] addr = {"192.168.199.251:11211"};// 指定memcached服务地址 String[] addr = {"localhost:11211"};// 指定memcached服务地址 Integer[] weights = {10};// 指定memcached服务器负载量 SockIOPool pool = SockIOPool.getInstance();// 从连接池获取一个连接实例 // 设置服务器和服务器负载量 pool.setServers(addr); pool.setWeights(weights); // 设置一些基本的参数 //设置初始连接数5 最小连接数 5 最大连接数 250 //设置一个连接最大空闲时间6小时 pool.setInitConn(5); pool.setMinConn(5); pool.setMaxConn(250); pool.setMaxIdle(1000 * 30 * 30*6); // 设置主线程睡眠时间 // 每隔30秒醒来 然后 // 开始维护 连接数大小 pool.setMaintSleep(30); // 设置tcp 相关的树形 // 关闭nagle算法 // 不设置连接超时 pool.setNagle(false); pool.setSocketTO(30); pool.setSocketConnectTO(0); // 开始初始化 连接池 pool.initialize(); } public MemCacheServer(){} // /** // * getInstance:方法返回memCached. <br/> // * // * @return memCached的实例 // * @since JDK 1.6 // */ // public static MemCacheServer getInstance(){ // return memCacheServer; // } /** * set:对Memcahed的set 命令的封装用于向缓存添加新的键值对。如果键已经 * 在,则之前的值将被替换. <br/> * * @param key * @param value * @return * @since JDK 1.6 */ public static boolean set(String key, Object value) { return client.set(key, value); } /** * set:对Memcahed的set 命令的封装用于向缓存添加新的键值对。如果键已经 * 在,则之前的值将被替换. <br/> * * @param key * @param expireTime 单位为:ms * @param value * @return * @since JDK 1.6 */ public static boolean set(String key,int expireTime,Object value) { return client.set(key,value,new Date(expireTime)); // return client.set(key, value); } /** * add:对Memcahed的add命令仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。如果缓存中已经存在键,则之前的值将仍然保持相同,并且您将获得响应 NOT_STORED. <br/> * * @param key * @param value * @param expiry 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远) * @return * @since JDK 1.6 */ public static boolean add(String key, Object value, Date expiry) { return client.add(key, value, expiry); } /** * add:对Memcahed的add命令的封装仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。如果缓存中已经存在键,则之前的值将仍然保持相同,并且您将获得响应 NOT_STORED. <br/> * * @param key * @param value * @return * @since JDK 1.6 */ public static boolean add(String key, Object value) { return client.add(key, value); } /** * add:对Memcahed的add命令的封装仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。如果缓存中已经存在键,则之前的值将仍然保持相同,并且您将获得响应 NOT_STORED. <br/> * * @param key * @param value * @return * @since JDK 1.6 */ public static boolean replace(String key, Object value) { return client.replace(key, value); } /** * replace:对Memcahed的replace命令仅当键已经存在时,replace 命令才会替换缓存中的键。如果缓存中不存在键,那么您将从 memcached 服务器接受到一条 NOT_STORED 响应. <br/> * * @param key * @param value * @param expiry * @return * @since JDK 1.6 */ public static boolean replace(String key, Object value, Date expiry) { return client.replace(key, value, expiry); } /** * delete:对Memcahed的delete命令的封装。delete 命令用于删除 memcached 中的任何现有值。您将使用一个键调用delete,如果该键存在于缓存中,则删除该值。. <br/> * * @param key * @return * @since JDK 1.6 */ public static boolean delete(String key) { return client.delete(key); } /** * get:get对Memcahed的get命令的封装 命令用于检索与之前添加的键值对相关的值. <br/> * * @param key * @return * @since JDK 1.6 */ public static Object get(String key) { return client.get(key); } /** * gets:gets 命令的功能类似于基本的 get 命令。两个命令之间的差异在于,gets 返回的信息稍微多一些:64 位的整型值非常像名称/值对的 “版本” 标识符. <br/> * * @param key * @return * @since JDK 1.6 */ public static Object gets(String key) { return client.gets(key); } /** * flushAll:用于清理缓存中的所有名称/值对。如果您需要将缓存重置到干净的状态,则 flush_all 能提供很大的用处. <br/> * * @return * @since JDK 1.6 */ public static boolean flushAll() { return client.flushAll(); } /** * 测试代码 * @param args */ public static void main(String[] args) { // MemCacheServer cache = MemCacheServer.getInstance(); // cache.set("zf", 18); // System.out.println("zf get value : " + cache.get("zf")); // cache.replace("zf", 20); // cache.set("zf1", 19); // // cache.delete("zf"); // System.out.println("zf get value : " + cache.get("zf")); // System.out.println("zf get value : " + cache.get("zf1")); // /*cache.flushAll(); // System.out.println(1); // System.out.println("zf get value : " + cache.get("zf")); // System.out.println("zf get value : " + cache.get("zf1"));*/ //// System.out.println("zf get value" + cache.gets("zf")); // cache.set("zf2", "沄莲"); // cache.set("zf3", "沄莲来咯"); // cache.set("zf4", "我在测试咯"); // System.out.println("zf get value : " + cache.get("zf2")); // System.out.println("zf get value : " + cache.get("zf3")); // System.out.println("zf get value : " + cache.get("zf4")); // MemCacheServer cache = MemCacheServer.getInstance(); List<Integer> list = new ArrayList<>(); for (int i=0;i<5;i++){ list.add(i+1); } MemCacheServer.set("age", "27岁"); MemCacheServer.set("list",list); System.out.println("age get value : " + MemCacheServer.get("age")); System.out.println("age get value : " + MemCacheServer.get("list")); MemCacheServer.flushAll(); System.out.println("age get value : " + MemCacheServer.get("age")); //todo 设置失效时间 时间的单位为 ms List<Integer> integerList = list; MemCacheServer.set("integerList",5000,integerList); System.out.println("integerList get value before: " + MemCacheServer.get("integerList")); try { Thread.sleep(6000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("integerList get value after: " + MemCacheServer.get("integerList")); } }
相关推荐
在Java开发中,有三种主流的Memcached客户端库供开发者选择:官方的基于传统阻塞IO的客户端、Dustin Sallings实现的基于Java NIO的Spymemcached以及XMemcached。 1. **官方客户端** 官方提供的客户端是由Greg ...
在这个场景下,"memcached客户端所需jar包"指的是Java开发中用来连接和操作Memcached的库的Java Archive (JAR) 文件。 标题提到的"memcached客户端所需jar包",通常包括以下几个关键组件: 1. **Spymemcached**:...
在Java中使用Memcached客户端,首先需要添加对应的依赖到项目中,通常是通过Maven或Gradle的依赖管理来实现。接着,可以通过创建一个`MemcachedClient`实例连接到Memcached服务器。这个客户端提供了多种操作方法,如...
// 创建Memcached客户端连接 MemcachedClient client = new MemcachedClient( new ConnectionFactoryBuilder().setProtocol(DefaultConnectionFactory.Protocol.BINARY) .build(), AddrUtil.getAddresses(...
`memcache客户端-2.2.7.tgz` 是一个特定语言(可能是PHP、Python、Java等)的 Memcached 客户端库。安装过程因语言而异,以 PHP 为例: 1. 解压:`tar -zxvf memcache客户端-2.2.7.tgz` 2. 遵循该客户端库提供的...
Java连接Memcached通常需要以下步骤: 1. **引入依赖**: 首先,你需要在项目中添加Java Memcached客户端的jar包。这个压缩包可能包含了一个或多个jar文件,比如spymemcached或xmemcached。对于Maven项目,你可以...
Java连接Memcached的驱动包使得Java开发者能够方便地与Memcached进行交互,实现数据的快速读写。这个驱动包包含了丰富的功能和特性,下面将详细阐述其关键知识点。 ### 1. 基本操作接口 驱动包提供了包括`set`、`...
在描述中提到了一个博客链接,虽然具体内容未提供,但通常博主会详细介绍如何使用MINA框架创建Memcached客户端,包括设计思路、关键代码示例以及可能遇到的问题和解决方案。博客可能会涵盖以下知识点: 1. **Apache...
这个压缩包包含了编译和安装 Memcached 客户端所需的源代码和其他相关文件。 **一、Memcached 简介** Memcached 由 Danga Interactive 开发,最初是为 LiveJournal 的高并发需求设计的。它是一个基于键值对的内存...
总的来说,Java Memcached客户端库是一个强大的工具,它让Java开发者能够利用Memcached的强大缓存能力,同时保持代码简洁和高效。通过理解这个库的工作原理和提供的API,开发者可以有效地设计和实现高性能的分布式...
本篇学习笔记将重点介绍如何在Java环境中使用gwhalin提供的Memcached客户端进行开发。gwhalin的Memcached Java客户端是一个轻量级、高性能的库,使得Java开发者可以轻松地与Memcached服务器进行交互。 ### 一、...
综上所述,这个压缩包中的"JAVA工程"可能是演示了如何在Java应用程序中使用memcached客户端进行数据缓存操作的示例代码,涵盖了从连接、存储到查询等一系列操作。开发者可以通过学习和运行这些示例,更好地理解和...
1. **下载与安装**:这个包是Memcached客户端的一个特定版本,可以通过解压`memcached-1.4.12.tar.gz`来获取源代码,然后在Linux环境下编译安装。 2. **API支持**:包含C,C++,Python,PHP,Java,Perl等语言的...
常见的Java Memcached客户端有spymemcached和xmemcached,这里以spymemcached为例。可以通过Maven在`pom.xml`文件中添加依赖: ```xml <groupId>net.spy</groupId> <artifactId>spymemcached <version>2.12.3 ...
1. 源代码文件夹(src目录),包含Java Memcached客户端的源代码,开发者可以查看和学习其内部实现。 2. 编译后的jar文件(如:lib/slabsj-1.6.jar),这是实际运行时需要引入到Java项目的类库,包含了所有必要的类...
本文将围绕标题“Memcached-Java-Client-release_2.6.1.zip”展开,详细讲解如何在Java项目中整合并使用Memcached客户端库。 1. **Memcached简介** - Memcached是一种轻量级、基于内存的键值对存储系统,用于存储...
Spymemcached是Java社区广泛使用的Memcached客户端,它的使用非常简单。以下是一个简单的Java实例,演示如何使用Spymemcached连接到Memcached服务器并执行基本操作: 1. **添加依赖** 首先,你需要在项目中添加...
在Java应用中使用Memcached客户端,首先需要将`memcached.jar`添加到项目的类路径中。这个JAR文件包含了所有必要的类和方法,使得开发者能够通过Java代码创建连接、存储和检索缓存的数据。例如,你可以使用流行的...
描述中提到的“引用 Memcached.ClientLibrary.dll”,这是一个常用的.NET Memcached客户端库,它为.NET开发者提供了方便的API,用于连接和操作Memcached服务器。通过引用这个库,开发人员可以轻松地在他们的.NET应用...
这个zip文件“java_memcached-release_2.0.1.zip”包含了Java Memcached客户端库的源代码、编译后的二进制库、文档和可能的示例。下面将详细讨论该库的关键知识点: 1. **Memcached客户端接口**:Java Memcached...