目前我正在使用Redis进行以下目的:
例如:
@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
。当然我也可以缓存此结果,但如果新用户只注册到系统,则可能会更改此查询的结果。如果发生这种情况,缓存将过时。如何解决这样的问题?
非常感谢你!
答案 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;关键的新数据。