sql >> Databáze >  >> NoSQL >> Redis

Jak získat všechny klíče z Redis pomocí šablony redis

Právě jsem sjednotil odpovědi, které jsme viděli zde.

Zde jsou dva způsoby, jak získat klíče z Redis, když používáme RedisTemplate.

1. Přímo z 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);
}

Poznámka:Měli byste mít nakonfigurovaný redisTemplate pomocí StringRedisSerializer ve vaší fazoli

Pokud používáte konfiguraci bean založenou na java

redisTemplate.setDefaultSerializer(new StringRedisSerializer());

Pokud používáte konfiguraci bean založenou na spring.xml

<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. Z 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();

Pokud toto připojení výslovně neuzavřete, narazíte na vyčerpání základního fondu připojení Jedis, jak je uvedeno v https://stackoverflow.com/a/36641934/3884173.



  1. Laravel - Spouštění úloh v sekvenci

  2. Jaké jsou výhody použití databáze bez schémat, jako je MongoDB, ve srovnání s relační databází?

  3. Nejrychlejší způsob uložení numpy pole v redis

  4. Existuje nějaký způsob, jak implementovat stránkování v jarním webfluxu a jarních datech reaktivních