gpt4 book ai didi

spring - 如何使用 redis 模板从 Redis 获取所有 key

转载 作者:IT老高 更新时间:2023-10-28 13:54:29 25 4
gpt4 key购买 nike

我已经被这个问题困扰了很长时间。我想使用 redis 模板从 redis 获取 key 。我试过 this.redistemplate.keys("*");但这并没有得到任何东西。即使使用该模式,它也不起作用。

您能否建议最好的解决方案。

最佳答案

我只是整合了答案,我们在这里看到了。

当我们使用 RedisTemplate 时,这里有两种从 Redis 获取 key 的方法。

1.直接来自 RedisTemplate

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);
}

注意:你应该已经在你的 bean 中配置了带有 StringRedisSerializer 的 redisTemplate

如果你使用基于 java 的 bean 配置

redisTemplate.setDefaultSerializer(new StringRedisSerializer());

如果你使用基于 spring.xml 的 bean 配置

<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"/>

<!-- redis template definition -->
<bean
id="redisTemplate"
class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnectionFactory"
p:keySerializer-ref="stringRedisSerializer"
/>

<强>2。来自 JedisConnectionFactory

RedisConnection redisConnection = template.getConnectionFactory().getConnection();
Set<byte[]> redisKeys = redisConnection.keys("samplekey*".getBytes());
List<String> keysList = new ArrayList<>();
Iterator<byte[]> it = redisKeys.iterator();
while (it.hasNext()) {
byte[] data = (byte[]) it.next();
keysList.add(new String(data, 0, data.length));
}
redisConnection.close();

如果您不明确关闭此连接,您将遇到底层 jedis 连接池的耗尽,如 https://stackoverflow.com/a/36641934/3884173 中所述.

关于spring - 如何使用 redis 模板从 Redis 获取所有 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19098079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com