具有Spring Cache的MySql的Redis缓存策略

时间:2015-06-15 01:50:59

标签: caching redis spring-cache

目前我正在使用Redis进行以下目的:

  1. 缓存网页。
  2. 缓存SQL查询,导致单个结果
  3. 例如:

    @Cacheable(value = "memberCache", key = "#username.concat('')")
    public MemberModel findByUsername(String username) {
        return memMapper.findByUsername(username);
    }
    

    但问题是如何缓存SQL查询导致多个结果。

    e.g:

    public List<MemberModel> findWhichAgeBiggerThan(int age) {
        return memMapper.ageBiggerThan(age);
    }
    

    现在结果变成了List。当然我也可以缓存此结果,但如果新用户只注册到系统,则可能会更改此查询的结果。如果发生这种情况,缓存将过时。如何解决这样的问题?

    非常感谢你!

1 个答案:

答案 0 :(得分:0)

您可以使用Redis Hash:

,而不是使用List

你的方法将是这样的:

public Map<String, MemberModel> findWhichAgeBiggerThan(int age) {
   // return map with key as String(may be user id) and actual MemberModel
}

这整张地图可以根据超级密钥保存&#34;成员&#34;个人数据可以用student1,student2键保存,如下所示

hset members student1 MemberModel1 student2 MemberModel2

要添加任何其他数据,只需使用上述命令以及

等特定数据
hset members student_new MemberModel_new

此处会员将添加/更新现有的&#34;会员&#34;关键的新数据。

相关问题