今天以代码实例的形式总结一下向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;
}
}

0分下载project代码

memcached—向memcached中保存Java实体需注意的问题的更多相关文章

  1. EBS OAF开发中的Java 实体对象(Entity Object)验证功能补充

    EBS OAF开发中的Java 实体对象(Entity Object)验证功能补充 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) EO理论上 ...

  2. 在MySQL中保存Java对象

    需要在MySQL中保存Java对象. 说明: 对象必须实现序列化 MySQL中对应字段设置为blob 将Java对象序列化为byte[] public static byte[] obj2byte(O ...

  3. 面试中关于Java你所需知道的的一切

    本篇文章会对面试中常遇到的Java技术点进行全面深入的总结,帮助我们在面试中更加得心应手,不参加面试的同学也能够借此机会梳理一下自己的知识体系,进行查漏补缺. 1. Java中的原始数据类型都有哪些, ...

  4. Memcached在.net中的应用

    一.MemCached下载 服务端下载:http://memcachedproviders.codeplex.com/ client下载:path=/trunk">http://sou ...

  5. Memcached在.Net中的基本操作

    Memcached在.Net中的基本操作 一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅 ...

  6. memcached学习——常用命令+基于java客户端的3种简单实现(二)

    常用命令: memcached设计的原则就是简单,所以支持的命令也不是特别多~ 1.查看memcached的状态,主要用于分析内存的使用状况.优化内存分配等 stats 查看memcached的运行状 ...

  7. (转)Memcached 在windows下的java使用

    Memcached 在windows下的java使用   研究这个东东主要是为了解决在教务管理中选课系统的大并发情况下数据库频繁读写造成速度慢的问题,但要使用WEB服务器的内存,是不是可靠还需要验证, ...

  8. 安装php扩展模块参数memcache和memcached在php中的应用

    一, memcache和memcached的区别与关系统php要想去访问memcached就得需要memcache扩展,这个道理和php连接mysql一样. 你不安装memcache扩展就没法识别me ...

  9. Memcached在企业中的应用

    Memcached简介 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitz ...

随机推荐

  1. axis2调用webservice教训

    总结教训,axis2client调用WS接口时url不能加?wsdl,而用cxf调用时则要加上. 今天用axis2的RpcServerClient调用https的webservice接口,在设置完op ...

  2. php pdo具体操作

    0x01:测试PDO是否安装成功 运行如下代码,如果提示参数错误,说明PDO已经安装,如果说明对象不存在,则修改PHP配置文件php.ini,取消php_pdo_yourssqlserverhere. ...

  3. 乐字节-Java8核心特性实战之Lambda表达式

    大家好,小乐又来给大家分享Java8核心特性了,上一篇文章是<乐字节|Java8核心实战-接口默认方法>,这次就来讲Java8核心特征之Lambda表达式. Java8 引入Lambda表 ...

  4. java中的数组的Arrays工具类的使用

    package day04.d1.shuzu; import java.util.Arrays; /** * Arrays 工具类 * @author Administrator * */public ...

  5. RMS:均方根值,RMSE:均方根误差,MSE:标准差

    .均方根值(RMS),有时也称方均根.效值.英语写为:Root Mean Square(RMS). 美国传统词典的定义为:The square root of the average of squar ...

  6. 兼容各个浏览器的jquyer zclip复制文本插件 无效的解决办法

    项目中使用点击文本复制功能,用了这个兼容各个浏览器的插件,但是发现放在最前面正常,放到嵌套的html中就失效. 解决办法: <span style="position: relativ ...

  7. BZOJ4517: [Sdoi2016]排列计数(组合数+错位排列)

    Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 1626  Solved: 994[Submit][Status][Discuss] Descripti ...

  8. Caffe: Caffe的Python接口

    官方参考:http://caffe.berkeleyvision.org/installation.html 官方介绍是这样的: Python The main requirements are nu ...

  9. Nginx配置udp/tcp代理

    #编译 ./configure --prefix=/servyouapp/nginx --with-stream --with-http_stub_status_module #nginx.conf部 ...

  10. C++基础 (8) 第八天 数组指针 模板指针 C语言中的多态 模板函数

    1昨日回顾 2 多态的练习-圆的图形 3多态的练习-程序员薪资 4员工管理案例-抽象类和技术员工的实现 employee.h: employee.cpp: technician.h: technici ...