Set<String> redisKeys = template.keys("samplekey*"));
// Store the keys in a List
List<String> keysList = new ArrayList<>();
Iterator<String> it = redisKeys.iterator();
while (it.hasNext()) {
String data = it.next();
keysList.add(data);
}
import org.springframework.data.redis.core.RedisTemplate;
import org.apache.commons.collections.CollectionUtils;
String key = "example*";
Set keys = redisTemplate.keys(key);
if (CollectionUtils.isEmpty(keys)) return null;
List list = redisTemplate.opsForValue().multiGet(keys);
9条答案
按热度按时间j2cgzkjk1#
我刚刚整理了答案,我们在这里看到了。
当我们使用RedisTemplate时,有两种方法可以从Redis获取密钥。
1.直接来自RedisTemplate
注意:您应该已在Bean中使用StringRedisSerializer配置了redisTemplate
2.来自JedisconnectionFactory
如果您不显式关闭这个连接,就会遇到底层jedis连接池耗尽的情况,如https://stackoverflow.com/a/36641934/3884173中所述。
b09cbbtk2#
尝试:
imzjd6km3#
尝试
redisTemplate.setKeySerializer(new StringRedisSerializer());
v09wglhw4#
避免使用
keys
命令。在对大型数据库执行该命令时,可能会破坏性能。您应该使用
scan
命令来代替。下面是您的操作方法:或者使用Redisson Redis Java客户端更简单:
s71maibg5#
试试看
7gcisfzg6#
它确实有效,但似乎不推荐?因为我们不能在生产中使用Keys命令。我假设
RedisTemplate.getConnectionFactory().getConnection().keys
正在调用redis Keys命令。有什么替代方案吗?1wnzp6jl7#
我用的是
redisTemplate.keys()
,但是它不工作。所以我用了jedis,它工作了。下面是我用的代码。368yc8dk8#
解决方案可以是这样的
或者您可以使用
jedis.hscan()
和ScanParams
。gev0vcfq9#
这应该行得通