spring使用Redis自定義前綴后綴名(去掉SimpleKey []+自定義)


spring中自動加上 SimpleKey [] 解決方案

一、自定義后綴名

1、定義類實現KeyGenerator接口

MyKeyGenerator

package com.wbg.springRedis.service.impl;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;

@Component("myKeyGenerator")
public class MyKeyGenerator implements KeyGenerator {
    @Override
    public Object generate(Object target, Method method, Object... params) {
        //返回后綴名
        //return method.getName();
        
        //注意,這里不能返回null,否則會報錯
        //java.lang.IllegalArgumentException:
        // Null key returned for cache operation (maybe you are using named params on classes without debug info?) Builder[public java.util.List com.wbg.springRedis.service.impl.RoleServiceImpl.listAll()] caches=[listAll] | key='' | keyGenerator='myKeyGenerator' | cacheManager='' | cacheResolver='' | condition='' | unless='' | sync='false'
        return "";
    }
}

2、注解使用:

@Cacheable(value = "listAll", keyGenerator = "myKeyGenerator")

已經解決

二、自定義前綴:

  @Bean
    RedisCacheManager cacheManager() {
        
        RedisCacheConfiguration configuration = RedisCacheConfiguration
                .defaultCacheConfig()
                .computePrefixWith(cacheName -> "redis" + cacheName)
                .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(RedisSerializer.string()))
                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(RedisSerializer.java()));

        return RedisCacheManager.builder(redisConnectionFactory()).cacheDefaults(configuration).build();
    }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM