sql >> Database teknologi >  >> NoSQL >> Redis

Sådan får du alle nøgler fra Redis ved hjælp af redis skabelon

Jeg har lige konsolideret svarene, vi har set her.

Her er de to måder at få nøgler fra Redis på, når vi bruger RedisTemplate.

1. Direkte fra 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);
}

Bemærk:Du skal have konfigureret redisTemplate med StringRedisSerializer i din bønne

Hvis du bruger java-baseret bønnekonfiguration

redisTemplate.setDefaultSerializer(new StringRedisSerializer());

Hvis du bruger spring.xml-baseret bønnekonfiguration

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

Hvis du ikke lukker denne forbindelse eksplicit, vil du løbe ind i en udtømning af den underliggende jedis-forbindelsespulje som sagt i https://stackoverflow.com/a/36641934/3884173.



  1. Opret filteraggregation i foråret

  2. Vælg Grupper efter antal og særskilt antal i samme mongodb-forespørgsel

  3. Mongoose find/opdater underdokument

  4. MongoDB-fejl:Kan ikke bruge genforsøgsskrivninger med limit=0