【发布时间】:2018-01-27 06:53:29
【问题描述】:
我有一个通过 Spring Boot 使用 redis 缓存进行缓存的服务方法(使用 compile("org.springframework.boot:spring-boot-starter-data-redis:1.5.6.RELEASE")):
@Cacheable( value = "test" )
public CacheTestObject getTestObject(String name)
{
return new CacheTestObject( name );
}
这可行,但是当我尝试获取所有密钥(并在那里看到)时,我得到:
//This returns 0 keys
( ( RedisTemplate ) cacheManager.getCache("test").getNativeCache() ).keys( "*" )
但这会返回 true:
( ( RedisTemplate ) cacheManager.getCache("test").getNativeCache() ).hasKey( "Joe" )
以下都是:
//TRUE
( ( RedisTemplate ) cacheManager.getCache("test").getNativeCache() ).hasKey( "Joe" )
//TRUE
( ( RedisTemplate ) cacheManager.getCache("test").getNativeCache() ).hasKey( "J*e" )
//FALSE
( ( RedisTemplate ) cacheManager.getCache("test").getNativeCache() ).hasKey( "Jo*" )
//FALSE
( ( RedisTemplate ) cacheManager.getCache("test").getNativeCache() ).hasKey( "*oe" )
//FALSE
( ( RedisTemplate ) cacheManager.getCache("test").getNativeCache() ).hasKey( "*" )
这是为什么?为什么我不能得到所有带有“”模式的键?甚至是“J”?
如果我执行任何“*”是第一个或最后一个的模式查询,它不会返回任何键。
【问题讨论】:
标签: java spring spring-boot caching spring-data-redis