0

目前我将 Redis 用于以下目的:

  1. 缓存网页。
  2. 缓存 SQL 查询导致单一结果

例如:

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

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

例如:

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

现在结果变成了List. 当然我也可以缓存这个结果,但是如果一个新用户刚刚注册到系统,这个查询的结果可能会改变。如果发生这种情况,缓存将是陈旧的。如何解决这样的问题?

非常感谢!

4

1 回答 1

0

您可以使用 Redis Hash 而不是使用 List :

您的方法将是这样的:

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

整个地图可以用超级键保存,比如“成员”,个人数据可以用 student1、student2 键保存,如下所示

hset members student1 MemberModel1 student2 MemberModel2

要添加任何其他数据,只需将上述命令与特定数据一起使用,例如

hset members student_new MemberModel_new

在这里,成员将使用新数据添加/更新现有的“nembers”键。

于 2015-06-15T05:38:53.850 回答