首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用简单memcached获取与键关联的值?

如何使用简单memcached获取与键关联的值?
EN

Stack Overflow用户
提问于 2014-05-12 15:05:33
回答 1查看 491关注 0票数 0

要将对象添加到"CplxObj“命名空间,我使用以下方法:

代码语言:javascript
复制
@ReadThroughSingleCache(namespace = "CplxObj", expiration = EXPIRATION_TIME)
    public List<MyObj> getComplexObjectFromDB(
            @ParameterValueKeyProvider List<MyObj> listToAdd) {

        return getSA(listToAdd);
    }

    /**
     * simple-spring-memcached framework will add to cache if element does not exist
     * @param listToAdd
     * @return
     */
    private List<MyObj> getSA(List<MyObj> listToAdd) {

        System.out.println("Adding to cache");

        return listToAdd;
    }

但是我怎样才能得到List<MyObj> for an associated key (eg a userId)呢?

代码语言:javascript
复制
public List<MyObj> getComplexObjectFromDB("userId") {
    //logic to get the List associated with the key
}

我不认为我应该为每个id创建一个新的命名空间?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-13 05:16:38

简单Spring (SSM)注释@ReadThroughSingleCache的工作方式如下:

  1. 拦截方法(getComplexObjectFromDB)调用并检查值是否在缓存中,如果是,则返回它,而不执行该方法。
  2. 结果不在缓存中,因此执行该方法(getComplexObjectFromDB)。
  3. 存储结果是缓存。
  4. 返回结果。

如您所见,@ReadThroughSingleCache将在没有缓存时将值赋值给缓存,并在出现时从缓存中获取值。

由于@ReadThroughSingleCache将整个结果存储在单个缓存键下,所以它通常不与List @ParameterValueKeyProvider一起使用。常见的用法是:

代码语言:javascript
复制
@ReadThroughSingleCache(namespace = "CplxObj", expiration = EXPIRATION_TIME)
public List<User> getUserByNameFromDB(@ParameterValueKeyProvider String name) {
     List<User> users = ......; // query DB to find users with given name
     return users;
}

因此,下次调用getUserByNameFromDB时,将从缓存返回相同的名称,而不是查询数据库结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23612585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档