java memcache应用
import java.io.Serializable;
import java.text.DateFormat;
import java.util.Date;
import java.util.Map; import com.danga.MemCached.MemCachedClient;
import com.pt.util.memcached.MemcachedTool; public class testMemcached { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MemCachedClient mc = MemcachedTool.getInstance();
//(1000 * 129是本地时间和服务器端时间的差值)
Date failDate = new Date(System.currentTimeMillis() - 1000 * 129 + 10000);
System.out.println(failDate);
mc.set("c", "230",failDate); //如果有相同的key值,则替换掉原先的值 失效时间(以服务器的时间为准)
Boolean add = mc.add("b", "110"); //如果存在同样key值,则返回false
String str = (String)mc.get("c");
String[] keys = {"a","b"};
Map strs = mc.getMulti(keys); //获取多个值 返回结果是一个数组
System.out.println("get value from memcached: " + str);
mc.delete("c"); //删除key System.out.println("test add method: " + add);
System.out.println("get params: " + strs); //写入对象
user men = new user();
men.setId(1907);
men.setName("潘腾");
boolean setObj = mc.set("user", men);
user getMen = (user)mc.get("user");
System.out.println(getMen);
} } class user implements Serializable{
String name;
int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "name: " + name + " id: " + id;
} }
testMain
package com.pt.util.memcached; import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool; public class MemcachedTool {
private static MemCachedClient memcacheClient = null; private MemcachedTool(){ } public static MemCachedClient getInstance(){
if(memcacheClient == null){
memcacheClient = new MemCachedClient();
memcacheClient.setDefaultEncoding("UTF-8"); //写入缓存的编码格式 }
return memcacheClient;
} static{
String[] serversArray = {"192.168.65.221:13220"};
Integer[] weight = {1};
SockIOPool connPool = SockIOPool.getInstance();
connPool.setServers(serversArray); //设置memcached服务器
connPool.setWeights(weight); //设置各个服务器存储权重
connPool.setMinConn(3); //设置连接池的最小连接数目
connPool.setInitConn(3); //初始化可用连接数目
connPool.setMaxIdle(10000); //可用连接池最长等待时间
connPool.setSocketTO(10000); //读取等待超时值
connPool.setSocketConnectTO(10000); //连接等待超时值
//心跳检测,设置为true时,每次通信都会先检测连接是否可用 增加IO和网络开销,一般设置为false 默认是false
connPool.setAliveCheck(false);
/**
* alg=0 使用String.hashCode()获得hash code,该方法依赖JDK,可能和其他客户端不兼容,建议不使用
* alg=1 使用original 兼容hash算法,兼容其他客户端
* alg=2 使用CRC32兼容hash算法,兼容其他客户端,性能优于original算法
* alg=3 使用MD5 hash算法
* 采用前三种hash算法的时候,查找cache服务器使用余数方法。采用最后一种hash算法查找cache服务时使用consistent方法。
**/
connPool.setHashingAlg(3);
//设置服务器宕机或连接由中断变为恢复后,该连接继续可用
connPool.setFailback(true);
//启动pool
connPool.initialize();
}
}
MemcacheTool
需要引入:java-memcached-release_2.5.2.jar包
java memcache应用的更多相关文章
- JAVA MemCache 史无前例的详细讲解【转】
非原创转自:http://nhy520.iteye.com/blog/1775893 这篇文章是我看到的介绍的比较详细的,入门级别算是足足够了 Memcach什么是Memcache Memcache集 ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- ehcache memcache redis -- java中的三大缓存
三个缓存在java代码中用的是较多的,但是它们都有自己的应用场合,和优缺点. Ehcache 1.初衷:减少数据库操作的高延时而设计.(缓存的目的,好像都是这个吧) 2.Apache Licen ...
- CentOS安装卸载memcache及JAVA示例
原文地址:http://www.cnblogs.com/zhongshengzhen/ 先安装libevent,memcached依赖libevent的lib [root@VM_64_81_c ...
- java项目使用memcache实现session共享+session基础
本文章主要目的是配置session共享,为了巩固基础,捎带介绍了一些基础知识(网上搜索后觉得最全面的特引过来,节省时间),基础扎实的可以自动忽略. 基础篇: 1.了解java web中的session ...
- java MemCachedClient遍历memcache中所有的key
在java memcached client documentation中没有提共遍历memcache所有key的方法.但是提供了两个方法statsItems和statsCacheDump,通过sta ...
- java开发之阿里云对象存储OSS和云数据库Memcache的使用
web开发中标配:aliyun ECS(阿里云服务器),aliyun RDS(阿里云数据库),aliyun OSS(阿里云对象存储),aliyun Memcache(阿里云缓存数据库). 今天就介绍下 ...
- java中Memcache的使用
java中Memcache的使用 一.什么是Memcached? Memcached是danga.com开发的分布式内存对象缓存系统,所谓分布式,意味着它不是本地的,而是基于网络连接完成服务.Memc ...
- (转)java中使用memcache
背景:公司项目中使用java和memcache相结合来搭建缓存,所以要了解下缓存的基础知识! 1 了解memcache 1.1 基础知识 什么是Memcache? Memcache集群环境下缓存解决方 ...
随机推荐
- [妙味DOM]第四课:Event-事件详解2
知识点总结 事件捕获 obj.addEventListener('click',fn,true) 从外往里 obj.addEventListener('click',fn,false) 从里往外(冒泡 ...
- 如何解决两个li之间的缝隙
如何解决两个li之间的缝隙的问题: 在做一个类似按钮左右滑动的选择器的动效,遇到了个是关于li之间的缝隙的问题: HTML如下: <span class="c1mChanger&quo ...
- C# 语言规范_版本5.0 (第4章 类型)
1. 类型 C# 语言的类型划分为两大类:值类型 (Value type) 和引用类型 (reference type).值类型和引用类型都可以为泛型类型 (generic type),泛型类型采用一 ...
- Ubuntu环境变量——系统变量和用户变量
系统变量: 对所有用户有效果 /etc/profile /etc/environment 两个命令只用一个就可以,原则上是重启后修改生效,但是经过验证可以通过执行以下命令实现: source /etc ...
- 小心DLL链接静态库时的内存错误
本文转自http://www.bennychen.cn/2010/09/%E5%B0%8F%E5%BF%83dll%E9%93%BE%E6%8E%A5%E9%9D%99%E6%80%81%E5%BA% ...
- SharePoint 2013 字段属性之JSLink 转载来源(http://www.cnblogs.com/jianyus/p/3544482.html)
在SharePoint 2013中,SPField新增加了一个属性是JSLink,使用客户端脚本修改字段前台展示,我们可以用很多方法修改这个脚本的引用,然后来修改脚本,下面,我们举一个简单的例子. 具 ...
- ECOS-Ecstore 伪静态规则
.htaccess 文件 RewriteEngine On RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME ...
- a标签包含块级元素问题
a标签包含块级元素是不符合W3c标准的,但是淘宝也有这样的布局暂且认为可以这样(有时候布局需要这样写) 当a标签包含了div这样的块级元素时a标签是要转换成块级元素的使用display:block.但 ...
- IAR和Keil文件包含路径设置
在模块化编程时,为一个模块单独设置头文件是必不可少的. 在两款主流编译器中,在引用模块函数时候,包含头文件路径是必须的,那么设置文件路径的准确性就显得尤为重要. 否则,编译器会报错,无法打开某某头文件 ...
- Oracle 正则 一行转多行
, LEVEL, 'i') AS STR,bjdm FROM valueWeekInfo CONNECT ; 可以将 bjdm 换成 '01,02,03,04' , valueWeekInfo 换成d ...