memcached—向memcached中保存Java实体需注意的问题
今天以代码实例的形式总结一下向memcached中保存Java实体需注意的问题:
memcached工具类代码:
package com.ghj.packageoftool; import java.util.Date; import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool; /**
* Memcached工具类
*
* @author GaoHuanjie
*/
public class MemcachedUtils { private static MemCachedClient memCachedClient;
static {
/************************************配置Memcached**************************************/
SockIOPool sockIOPool = SockIOPool.getInstance(); sockIOPool.setServers(new String[]{"127.0.0.1:11211"});//设置memcachedserver地址
sockIOPool.setWeights(new Integer[]{3}); //设置每一个MemCachedserver权重
sockIOPool.setFailover(true); //当一个memcachedserver失效的时候是否去连接还有一个memcachedserver.
sockIOPool.setInitConn(10); //初始化时对每一个server建立的连接数目
sockIOPool.setMinConn(10); //每一个server建立最小的连接数
sockIOPool.setMaxConn(100); //每一个server建立最大的连接数
sockIOPool.setMaintSleep(30); //自查线程周期进行工作,其每次休眠时间
sockIOPool.setNagle(false); //Socket的參数,假设是true在写数据时不缓冲,马上发送出去。Tcp的规则是在发送一个包之前,包的发送方会等待远程接收方确认已收到上一次发送过来的包;这种方法就能够关闭套接字的缓存——包准备马上发出。 sockIOPool.setSocketTO(3000); //Socket堵塞读取数据的超时时间
sockIOPool.setAliveCheck(true); //设置是否检查memcachedserver是否失效
sockIOPool.setMaxIdle(1000*30*30); // 设置最大处理时间
sockIOPool.setSocketConnectTO(0); //连接建立时对超时的控制 sockIOPool.initialize(); // 初始化连接池
if (memCachedClient == null){
memCachedClient = new MemCachedClient();
}
} private MemcachedUtils() {
} /**
* 向缓存加入键值对并为该键值对设定逾期时间(即多长时间后该键值对从Memcached内存缓存中删除,比方: new Date(1000*10),则表示十秒之后从Memcached内存缓存中删除)。
*
* @author GaoHuanjie
*/
public static boolean add(String key, Object value, Date expire) {
try {
return memCachedClient.add(key, value, expire);
} catch (Exception e) {
e.printStackTrace();
return false;
}
} /**
* 依据键获取Memcached内存缓存管理系统中对应的值
*
* @author GaoHuanjie
*/
public static Object get(String key) {
try {
return memCachedClient.get(key);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
測试main方法所在类代码:
package com.ghj.packageofclient; import java.util.Date; import com.ghj.packageoftool.MemcachedUtils;
import com.ghj.packageofvo.User; public class Client{ public static void main(String[] args) {
MemcachedUtils.add("user", new User("liunannan", "liunannan@jd"), new Date(1000*60));//向Memcached中加入一个序列化的对象
User user = (User)(MemcachedUtils.get("user"));
System.err.println("username:"+user.getUserName() + ",密码:" + user.getPassword());
}
}
Java实体代码:
package com.ghj.packageofvo; /**
* 用户业务bean
*
* @author 高焕杰
*/
public class User{ private String userName;
private String password; public User(String userName, String password) {
super();
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;
}
}
执行main方法,你将看到例如以下异常:
稍有Java基础的人一看便知:之所以出现这个问题全然是因为Java实体User类没有实例化造成的,所以User类应该改成例如以下代码:
package com.ghj.packageofvo; import java.io.Serializable; /**
* 用户业务bean
*
* @author 高焕杰
*/
public class User implements Serializable{ private static final long serialVersionUID = -3371451210123762490L; private String userName;
private String password; public User(String userName, String password) {
super();
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;
}
}
memcached—向memcached中保存Java实体需注意的问题的更多相关文章
- EBS OAF开发中的Java 实体对象(Entity Object)验证功能补充
EBS OAF开发中的Java 实体对象(Entity Object)验证功能补充 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) EO理论上 ...
- 在MySQL中保存Java对象
需要在MySQL中保存Java对象. 说明: 对象必须实现序列化 MySQL中对应字段设置为blob 将Java对象序列化为byte[] public static byte[] obj2byte(O ...
- 面试中关于Java你所需知道的的一切
本篇文章会对面试中常遇到的Java技术点进行全面深入的总结,帮助我们在面试中更加得心应手,不参加面试的同学也能够借此机会梳理一下自己的知识体系,进行查漏补缺. 1. Java中的原始数据类型都有哪些, ...
- Memcached在.net中的应用
一.MemCached下载 服务端下载:http://memcachedproviders.codeplex.com/ client下载:path=/trunk">http://sou ...
- Memcached在.Net中的基本操作
Memcached在.Net中的基本操作 一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅 ...
- memcached学习——常用命令+基于java客户端的3种简单实现(二)
常用命令: memcached设计的原则就是简单,所以支持的命令也不是特别多~ 1.查看memcached的状态,主要用于分析内存的使用状况.优化内存分配等 stats 查看memcached的运行状 ...
- (转)Memcached 在windows下的java使用
Memcached 在windows下的java使用 研究这个东东主要是为了解决在教务管理中选课系统的大并发情况下数据库频繁读写造成速度慢的问题,但要使用WEB服务器的内存,是不是可靠还需要验证, ...
- 安装php扩展模块参数memcache和memcached在php中的应用
一, memcache和memcached的区别与关系统php要想去访问memcached就得需要memcache扩展,这个道理和php连接mysql一样. 你不安装memcache扩展就没法识别me ...
- Memcached在企业中的应用
Memcached简介 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitz ...
随机推荐
- Android+Jquery Mobile学习系列-目录
最近在研究学习基于Android的移动应用开发,准备给家里人做一个应用程序用用.向公司手机移动团队咨询了下,觉得使用Android的WebView上手最快,因为WebView等于是一个内置浏览器,可以 ...
- php中一个经典的!==的用法
php中一个经典的!==的用法 <?php $str = 'Every time you bleed for reaching greatness.'; $cha = 'E'; if(strpo ...
- 查找python项目依赖并生成requirements.txt——pipreqs 真是很好用啊
查找python项目依赖并生成requirements.txt 转自:http://blog.csdn.net/orangleliu/article/details/60958525 一起开发项目的时 ...
- jQuery右键菜单contextMenu实例
URL: http://www.cnblogs.com/whitewolf/archive/2011/09/28/2194795.html http://www.blogjava.net/superc ...
- 【BZOJ2806】【CTSC2012】Cheat 广义后缀自动机+二分+Dp
题目 题目在这里 思路&做法 我们先对标准作文库建广义后缀自动机. 然后对于每一篇阿米巴的作文, 我们首先把放到广义后缀自动机跑一遍, 对于每一个位置, 记录公共子串的长度\((\)即代码和下 ...
- 【Linux】YUM Repositories for CentOS, RHEL & Fedora Systems
这里是官方wiki:https://wiki.centos.org/AdditionalResources/Repositories 一.简介 YUM(Yellowdog Updater Modifi ...
- BZOJ 2729 高精度+组合数学
思路: 考虑 把男生排成一排 女生和老师往里插 分成两种情况. 1. 女生中间夹着老师 2. 女生中间没有夹着老师 求一下组合* 阶乘就好了 先放Python代码 简洁易懂 def fact(n): ...
- Redux入门
Redux入门 本文转载自:众成翻译 译者:miaoYu 链接:http://www.zcfy.cc/article/4728 原文:https://bumbu.github.io/simple-re ...
- mybatis学习笔记之基础框架(2)
mybatis学习笔记之基础框架(2) mybatis是一个持久层的框架,是apache下的顶级项目. mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成满足s ...
- 04--C语言文件操作函数大全(超详细)
fopen(打开文件)相关函数 open,fclose表头文件 #include<stdio.h>定义函数 FILE * fopen(const char * path,const cha ...