Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Caching 基于Spring缓存的MySql Redis缓存策略_Caching_Redis_Spring Cache - Fatal编程技术网

Caching 基于Spring缓存的MySql Redis缓存策略

Caching 基于Spring缓存的MySql Redis缓存策略,caching,redis,spring-cache,Caching,Redis,Spring Cache,目前我使用Redis的目的如下: 缓存网页 缓存导致单个结果的SQL查询 例如: @Cacheable(value = "memberCache", key = "#username.concat('')") public MemberModel findByUsername(String username) { return memMapper.findByUsername(username); } 但问题是如何缓存导致多个结果的SQL查询 e、 g: public List fin

目前我使用Redis的目的如下:

  • 缓存网页
  • 缓存导致单个结果的SQL查询
  • 例如:

    @Cacheable(value = "memberCache", key = "#username.concat('')")
    public MemberModel findByUsername(String username) {
        return memMapper.findByUsername(username);
    }
    
    但问题是如何缓存导致多个结果的SQL查询

    e、 g:

    public List find hagebiggethan(整数年龄){
    返回memMapper.ageBiggerThan(age);
    }
    
    现在结果变成了一个
    列表
    。当然我也可以缓存这个结果,但是如果一个新用户刚刚注册到系统,这个查询的结果可能会改变。如果发生这种情况,缓存将过时。如何解决这样的问题


    非常感谢你

    您可以使用Redis哈希,而不是使用列表:

    您的方法如下所示:

    public Map<String, MemberModel> findWhichAgeBiggerThan(int age) {
       // return map with key as String(may be user id) and actual MemberModel
    }
    
    要添加任何其他数据,只需使用上面的命令和类似于

    hset members student_new MemberModel_new
    
    在此,成员将使用新数据添加/更新现有的“nembers”密钥

    hset members student1 MemberModel1 student2 MemberModel2
    
    hset members student_new MemberModel_new