sql >> Database >  >> NoSQL >> Redis

Hoe alle sleutels van Redis te krijgen met behulp van de redis-sjabloon

Ik heb zojuist de antwoorden samengevoegd die we hier hebben gezien.

Dit zijn de twee manieren om sleutels van Redis te krijgen, wanneer we RedisTemplate gebruiken.

1. Rechtstreeks van 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);
}

Opmerking:u moet redisTemplate hebben geconfigureerd met StringRedisSerializer in je boon

Als u een op Java gebaseerde beanconfiguratie gebruikt

redisTemplate.setDefaultSerializer(new StringRedisSerializer());

Als u op spring.xml gebaseerde bonenconfiguratie gebruikt

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

Als je deze verbinding niet expliciet sluit, zul je een uitputting van de onderliggende jedis-verbindingspool tegenkomen, zoals gezegd in https://stackoverflow.com/a/36641934/3884173.



  1. MongoDB-gegevensopslagmap wijzigen

  2. Clouddatabases implementeren met ClusterControl 1.6

  3. Hoe stel je een wachtwoord in voor Redis?

  4. db.collection is geen functie bij gebruik van MongoClient v3.0