一、序言
前面介绍了下simple-spring-memcache 的一些基本配置,这里就介绍下 一些注解和简单场景的试用。
二、基本场景和注解使用
2.1.通过 userId 返回数据,先从数据库查询,然后缓存,以便后面直接从缓存获取
@ReadThroughSingleCache
@ReadThroughSingleCache(namespace = "test", expiration = 30000) // 这注解主要返回带参数的对象,如果是User 类似的对象 要记得序列化 public long getUserById(@ParameterValueKeyProvider long id) throws Exception{ System.out.println("没有缓存命中"); return id; }
@ReadThroughMultiCache
@ReadThroughMultiCache(namespace = "test", expiration = 60) // 这个注解比较单调,我只能返回List,参数也是list public List<String> getUserList(@ParameterValueKeyProvider List list) throws Exception{ System.out.println("没有缓存命中"); List l = new ArrayList(3); l.add("1"); return l; }
@ReadThroughAssignCache
@ReadThroughAssignCache(assignedKey = "userKey", namespace = "test", expiration = 3000) // 这个注解在没有参数,也就是没有@ParameterValueKeyProvider 的时候,会指定key // 也就能支持上面的 几种情况了 public List getAllUser(){ System.out.println("没有缓存命中"); List l = new ArrayList(3); l.add("1"); return l; }
2.2 更新场景:如果我们有个User 对象,根据id 或者name 进行更新缓存。
先创建一个User对象
class User implements Serializable{ private int id; private String name; // 这个注解表示 @CacheKeyMethod public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + '}'; } }
@UpdateSingleCache
@UpdateSingleCache(namespace = "test", expiration = 300) // @ParameterDataUpdateContent 这个参数注解,表示更新之后,更新的值就是 int id ,很明显,这里参数最好是user 对象 public User updateUserById(@ParameterValueKeyProvider @ParameterDataUpdateContent int id) throws Exception{ return new User(); } // 同样也可以使用另一个注解@ReturnDataUpdateContent,但是必须二选一 @UpdateSingleCache(namespace = "test", expiration = 300) @ReturnDataUpdateContent // 这里表示 更新后的值,就是返回值,也就是new user() public User updateUserById(@ParameterValueKeyProvider @ParameterDataUpdateContent int id) throws Exception{ return new User(); }
@UpdateMultiCache
@UpdateMultiCache(namespace = "test", expiration = 60) @ReturnDataUpdateContent // 或者参数 的位置使用 @ParameterDataUpdateContent // 返回值 获得参数 和 保存一样,都只能使用List 这里比较纠结 public List<User> updateUsers(@ParameterValueKeyProvider List list){ return new ArrayList<User>(); }
@UpdateAssignCache
@UpdateAssignCache(assignedKey = "userKey", namespace = "test", expiration = 3000) @ReturnDataUpdateContent // 或者使用 @ParameterValueKeyProvider @ParameterDataUpdateContent 都是可以的 public User updateUser(){ return new User(); }
2.3 清除缓存:比如我delete 数据,或者其他想法,要清空这个缓存
@InvalidateSingleCache
@InvalidateSingleCache(namespace = "test") // 根据空间名 进行删除,这种死活要Key,不限定类型以及返回值了 public User delete(@ParameterValueKeyProvider List list) throws Exception{ User user = new User(); return user; }
@InvalidateMultiCache
@InvalidateMultiCache(namespace = "test") // 这种还非要list 的参数 public User delete(@ParameterValueKeyProvider List list) throws Exception{ System.out.println("没有缓存命中"); User user = new User(); return user; }
@InvalidateAssignCache
@InvalidateAssignCache(assignedKey = "userKey", namespace = "test") // assignedKey 也是不可缺少的,参数和返回值 不是必须的 public User delete() throws Exception{ User user = new User(); return user; }
@ReadCounterFromCache 等几个 跟原子计数器有关的,暂时没用到,就不介绍了,可以看文档!
小结:
1.这里仅仅介绍注解的基本用法, 深入的 以及源码, 有机会再分析吧,我也只大概翻阅了下源码,有问题的地方请说出来,好改进嘛~。~
2.虽然memcache 这里的注解提供的namespace 和 expiration ,颗粒度细化了不少,但是使用起来在注解方面 感觉没spring 提供的,或者和ehcache 结合的那种使用方便,特别是参数 以及返回值的一些限定上,有时间再搞一套吧!
参考文档:https://code.google.com/p/simple-spring-memcached/wiki/Getting_Started
相关推荐
spring+xmemcached aop切面 需要xmemcached-1.2.5+spring-2.5.6 class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean" destroy-method="shutdown"> ${XMemcached_servers} <!-- ...
Ehcache、xmemcached、redis 整合spring注解demo
xmemcached-1.2.4的官方源码。 xmemcached XMemcached is a high performance, easy to use blocking multithreaded memcached client in java. It's nio based (using my opensource nio framework :yanf4j), ...
repository\com\googlecode\xmemcached\xmemcached 2.4.6
memcache 分布式缓存,客户端,速度虽不比ehcache快。
xmemcached-1.2.6.2
xmemcached中文开发手册,提供的版本较老,但针对2.0的版本次文档同样适用,可以入门
xmemcached.chm帮助文档
xmemcached-1.4.3.jar
阿里ocs的java客户端demo,我测试了xmemcached和spymemcached。两个都可用,但xmc可以交由spring管理client对象的生命周期,而spymc却是spring...ocs spring xmemcached spymemcached(本机测试用memcached1.4.13版本)
测试类包括Xmemcached客户端与memcached client for java两者,可运行比较性能。 XMemcached简介: XMemcached是基于 java nio的Memcached客户端,java nio相比于传统阻塞 io 模型来说,有 效率高(特别在高并发下...
memcached 客户端 xmemcached jar 包,xmemcached 源文件 及 api
xmemcached 接口文档,方便开发和学习
基于java nio实现的高性能可扩展的memcached客户端。虽然Java的memcached库已经很多,但是这些Java开源memcached库并没有一个是基于NIO框架编写,因此...xmemcached的项目主页在:http://code.google.com/p/xmemcached/
xmemcached-1.4.2最新版,可用。memcached java客户端
官方中文手册,各种开发实例,集成spring等详尽配置信息,不错的资料!
NULL 博文链接:https://xly1981.iteye.com/blog/1809837
xmemcached 2.4.5 和 xmemcached 2.3.2 两个版本号的