Tôi chỉ tổng hợp các câu trả lời, chúng ta đã thấy ở đây.
Đây là hai cách để nhận khóa từ Redis, khi chúng tôi sử dụng RedisTemplate.
1. Trực tiếp từ 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);
}
Lưu ý:Bạn nên định cấu hình redisTemplate bằng StringRedisSerializer trong hạt đậu của bạn
Nếu bạn sử dụng cấu hình bean dựa trên java
redisTemplate.setDefaultSerializer(new StringRedisSerializer());
Nếu bạn sử dụng cấu hình bean dựa trên 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. Từ 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();
Nếu bạn không đóng kết nối này một cách rõ ràng, bạn sẽ cạn kiệt nhóm kết nối jedis cơ bản như đã nói trong https://stackoverflow.com/a/36641934/3884173.