首页 > 解决方案 > 清除redis spring数据中特定缓存名称的缓存

问题描述

我有以下缓存方法student-classes,我只想清除缓存名称student-classes

@Cacheable( value = "getStudentClasses",key ="(new net.student.util.CacheKeyCreator()).createKey(''+#university)",cacheManager = "cacheManager")
public List<StudentClass> getStudentClasses(String university) {
      //get studentclasses 
}

我试图清除如下,但它不会清除具有特定名称的缓存

@Bean(name = "cacheManager")
public CacheManager cacheManager ( RedisTemplate<String, Object> redisTemplate ) {
    RedisCacheManager redisCacheManager = new RedisCacheManager( redisTemplate );
    redisCacheManager.setDefaultExpiration(0);
    redisCacheManager.setUsePrefix( true);
    return redisCacheManager;
}


@Autowired
ApplicationContext context;
    
public void clearStudentClasses(){

  CacheManager cacheManager= (CacheManager) context.getBean("cacheManager");
          
  cacheManager.getCache("getStudentClasses").clear(); //exceptionLine            

 }

我在异常行得到了这个异常

> org.springframework.dao.InvalidDataAccessApiUsageException: ERR
> unknown command 'EVAL'; nested exception is
> redis.clients.jedis.exceptions.JedisDataException: ERR unknown command
> 'EVAL'

标签: spring-bootcachingredisspring-dataspring-data-redis

解决方案


推荐阅读