一、写在前面缓存作为系统性能优化的一大杀手锏,几乎在每个系统或多或少的用到缓存。有的使用本地内存作为缓存,有的使用本地硬盘作为缓存,有的使用缓存服务器。但是无论使用哪种缓存,接口中的方法都是差不多。笔者最近的项目使用的是memcached作为缓存服务器,由于memcached的一 ...
一、写在前面
缓存作为系统性能优化的一大杀手锏,几乎在每个系统或多或少的用到缓存。有的使用本地内存作为缓存,有的使用本地硬盘作为缓存,有的使用缓存服务器。但是无论使用哪种缓存,接口中的方法都是差不多。笔者最近的项目使用的是memcached作为缓存服务器,由于memcached的一些限制,现在想换redis作为缓存服务器。思路就是把memached的客户端换成redis客户端,接口依然是原来的接口,这样对系统可以无损替换,接口不变,功能不变,只是客户端变了。本文不介绍缓存的用法,不介绍redis使用方法,不介绍memcached与redis有何区别。只是实现一个redis客户端,用了jedis作为第三方连接工具。
二、一些想法
首先贴一下现项目中同事编写的缓存接口:
/** * @ClassName: DispersedCachClient * @Description: 分布式缓存接口,每个方法:key最大长度128字符,valueObject最大1Mb,默认超时时间30天 * @date 2015-4-14 上午11:51:18 * */public interface DispersedCachClient { /** * add(要设置缓存中的对象(value),) * * @Title: add * @Description: 要设置缓存中的对象(value),如果没有则插入,有就不操作。 * @param key 键 * @param valueObject 缓存对象 * @return Boolean true 成功,false 失败 */ public Boolean add(String key, Object valueObject); /** * add(要设置缓存中的对象(value),指定保存有效时长) * * @Title: add * @Description: 要设置缓存中的对象(value),指定有效时长,如果没有则插入,有就不操作。 * @param key 键 * @param valuObject 缓存对象 * @param keepTimeInteger 有效时长(秒) * @return Boolean true 成功,false 失败 */ public Boolean add(String key, Object valueObject, Integer keepTimeInteger); /** * * add(要设置缓存中的对象(value),指定有效时间点。) * * @Title: add * @Description: 要设置缓存中的对象(value),指定有效时间点,如果没有则插入,有就不操作。 * @date 2015-4-14 上午11:58:12 * @param key 键 * @param valuObject 缓存对象 * @param keepDate 时间点 * @return Boolean true 成功,false 失败 */ public Boolean add(String key, Object valueObject, Date keepDate); /** * * set(要设置缓存中的对象(value),) * * @Title: set * @Description: 如果没有则插入,如果有则修改 * @date 2015-4-14 下午01:44:22 * @param key 键 * @param valueObject 缓存对象 * @return Boolean true 成功,false 失败 */ public Boolean set(String key,Object valueObject) ; /** * * set(要设置缓存中的对象(value),指定有效时长) * * @Title: set * @Description: 指定有效时长,如果没有则插入,如果有则修改 * @date 2015-4-14 下午01:45:22 * @param key 键 * @param valueObject 缓存对象 * @param keepTimeInteger 保存时长(秒) * @return Boolean true 成功,false 失败 */ public Boolean set(String key, Object valueObject, Integer keepTimeInteger); /** * * set(要设置缓存中的对象(value),指定有效时间点) * * @Title: set * @Description: 指定有效时间点,如果没有则插入,如果有则修改 * @date 2015-4-14 下午01:45:55 * @param key 键 * @param valueObject 缓存对象 * @param keepDate 有效时间点 * @return Boolean true 成功,false 失败 */ public Boolean set(String key, Object valueObject, Date keepDate); /** * * replace(要设置缓存中的对象(value),有效) * * @Title: replace * @Description: 有效,如果没有则不操作,如果有则修改 * @date 2015-4-14 下午01:47:04 * @param key 键 * @param valueObject 缓存对象 * @return Boolean true 成功,false 失败 */ public Boolean replace(String key,Object valueObject) ; /** * * replace(要设置缓存中的对象(value),指定有效时长) * * @Title: replace * @Description: 指定有效时长,如果没有则不操作,如果有则修改 * @date 2015-4-14 下午01:47:30 * @param key 键 * @param valueObject 缓存对象 * @param keepTimeInteger 缓存时长(秒) * @return Boolean true 成功,false 失败 */ public Boolean replace(String key, Object valueObject, Integer keepTimeInteger); /** * * replace(要设置缓存中的对象(value),指定有效时间点) * * @Title: replace * @Description: 指定有效时间点,如果没有则不操作,如果有则修改 * @date 2015-4-14 下午01:48:09 * @param key 键值对 * @param valueObject 缓存对象 * @param keepDate 有效时间点 * @return Boolean true 成功,false 失败 */ public Boolean replace(String key, Object valueObject, Date keepDate); /** * * get(获得一个缓存对象) * * @Title: get * @Description: 获得一个缓存对象,响应超时时间默认 * @date 2015-4-14 下午04:18:16 * @param key 键 * @return Obeject */ public Object get( String key ); /** * * getMulti(获得Map形式的多个缓存对象) * * @Title: getMulti * @Description: 获得Map形式的多个缓存对象,响应超时时间默认 * @date 2015-4-14 下午04:53:07 * @param keys 键存入的string[] * return Map<String,Object> */ public Map<String,Object> getMulti( List<String> keys ); /** * * gets(获得一个带版本号的缓存对象) * * @Title: gets * @Description: 获得一个带版本号的缓存对象 * @date 2015-4-16 上午09:15:57 * @param key 键 * @return Object */ public Object gets(String key); /** * * getMultiArray(获得数组形式的多个缓存对象) * * @Title: getMultiArray * @Description: 获得数组形式的多个缓存对象 * @date 2015-4-16 上午09:27:29 * @param keys 键存入的string[] * @return Object[] * @throws */ public Object[] getMultiArray( List<String> keys ); /** * * cas(带版本号存缓存,与gets配合使用) * * @Title: cas * @Description: 带版本号存缓存,与gets配合使用,超时时间默认 * @date 2015-4-16 上午09:53:39 * @param key 键 * @param valueObject 缓存对象 * @param versionNo 版本号 * @return Boolean true 成功,false 失败 */ public boolean cas(String key, Object valueObject, long versionNo); /** cas(带版本号存缓存,与gets配合使用) * * @Title: cas * @Description: 带版本号存缓存,与gets配合使用,指定超时时长 * @date 2015-4-16 上午09:58:06 * @param key 键 * @param valueObject 缓存对象 * @param keepTimeInteger 超时时长 * @param versionNo 版本号 * @return Boolean true 成功,false 失败 */ public boolean cas(String key, Object valueObject, Integer keepTimeInteger, long versionNo); /** * * cas(带版本号存缓存,与gets配合使用) * * @Title: cas * @Description: 带版本号存缓存,与gets配合使用,指定超时时间点 * @date 2015-4-16 上午10:02:38 * @param key 键 * @param valueObject 缓存对象 * @param keepTime 超时时间点 * @param versionNo 版本号 * @return Boolean true 成功,false 失败 */ public boolean cas(String key, Object valueObject, Date keepDate, long versionNo); /** * * delete(删除缓存) * * @Title: delete * @Description: 删除缓存 * @date 2015-4-16 上午11:20:13 * @param key 键 */ public boolean delete(String key); }
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:spring整合redis客户端及缓存接口设计
关键词:Spring
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。