【发布时间】:2018-12-19 20:28:23
【问题描述】:
我正在使用 Spring-boot + Redis 将我的数据存储在缓存中。
我的控制器有这个配置:
public class CacheController {
@GetMapping("/{key}")
@Cacheable(value = "myCacheValue", keyGenerator = "customKeyGenerator")
public String getByKey(@PathVariable("key") String key) {
return key + System.currentTimeMillis();
}
}
我的 customKeyGenerator 是:
public class CustomKeyGenerator implements KeyGenerator {
public Object generate(Object target, Method method, Object... params) {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getSimpleName())
.append("-")
.append(method.getName());
if (params != null) {
for (Object param : params) {
sb.append("-")
.append(param.getClass().getSimpleName())
.append(":").append(param);
}
}
return sb.toString();
}
}
当我在我的 redis 中连接时,我有这个密钥:
1 - redis-cli --raw
KEYS *
myCacheValue~keys
��t$CacheController-getByKey-String:key9
2 - redis-cli
KEYS *
myCacheValue~keys
\xac\xed\x00\x05t\x00$CacheController-getByKey-String:key9
为什么这个字符出现在“CacheController”之前?
注意:我的密钥生成器以我的班级名称开头。
我希望我的键名只有这样: CacheController-getByKey-String:myKey
【问题讨论】:
标签: spring-boot redis jedis