I want to use Spring cache @Cacheable to manager cache.And the real cache is redis.
my code like that:
@PostMapping("/post")@CachePut(value = "abc", key = "#key")public String putInRedis(@RequestParam String key, @RequestParam String value) { saveInDB(key, value); return value;}@GetMapping("/get")@Cacheable(value = "abc", key = "#key")public String queryRedis(@RequestParam String key) { return findByKey(key);}
After I have the post request which is
localhost:8080/post?key=key&value=value
the redis server appear a weird key
127.0.0.1:6379> keys *1) "abc:\xac\xed\x00\x05t\x00\x03key"127.0.0.1:6379> GET "abc:\xac\xed\x00\x05t\x00\x03key""\xac\xed\x00\x05t\x00\x05value"
weird-redis-key-with-spring-data-jedis
how to set @Cacheable's Serializer like StringRedisTemplate default:
public StringRedisTemplate() { RedisSerializer<String> stringSerializer = new StringRedisSerializer(); setKeySerializer(stringSerializer); setValueSerializer(stringSerializer); setHashKeySerializer(stringSerializer); setHashValueSerializer(stringSerializer);}
my application.properties:
spring.redis.host=localhostspring.redis.password=spring.redis.port=6379
build.gradle
group 'io.freezhan'version '1.0-SNAPSHOT'buildscript { repositories { maven { url 'https://plugins.gradle.org/m2/' } } dependencies { classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.4.0.RELEASE' }}task wrapper(type: Wrapper) { gradleVersion = '2.13' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"}apply plugin: 'java'apply plugin: 'spring-boot'sourceCompatibility = 1.5repositories { mavenCentral()}dependencies { compile("org.springframework.boot:spring-boot-starter-web") { exclude module: "spring-boot-starter-tomcat" } compile("org.springframework.boot:spring-boot-starter-data-redis") compile("org.springframework.boot:spring-boot-starter-jetty") compile("org.springframework.boot:spring-boot-starter-actuator") compile 'org.projectlombok:lombok:1.16.10' testCompile("junit:junit")}