RedisTemplate SCAN 命令的使用和注意事项
2017-03-20 00:00
1596 查看
spring-data-redis提供了
RedisTemplate类以简化和统一对 Redis 的访问。
使用 HSCAN 命令类似于:
String key = "key"; BoundHashOperations<String, String, Long> boundHashOps = redisTemplate.boundHashOps(key); try (Cursor<Map.Entry<String, Long>> cursor = boundHashOps.scan( ScanOptions.scanOptions().count(1000).build())) { while (cursor.hasNext()) { Map.Entry<String, Long> entry = cursor.next(); // do sth. } catch (IOException e) { }
注意,Cursor 是需要在用完后是需要手动关闭连接的,我们可以使用 try catch 的语法来自动执行
Closable接口的
close()方法,如上例。
默认没有提供 SCAN 命令,我们可以手动实现:
public class RedisHelper { @SuppressWarnings("unchecked") public static Cursor<String> scan(RedisTemplate redisTemplate, String pattern, int limit) { ScanOptions options = ScanOptions.scanOptions().match(pattern).count(limit).build(); RedisSerializer<String> redisSerializer = (RedisSerializer<String>) redisTemplate.getKeySerializer(); return (Cursor) redisTemplate.executeWithStickyConnection(new RedisCallback() { @Override public Object doInRedis(RedisConnection redisConnection) throws DataAccessException { return new ConvertingCursor<>(redisConnection.scan(options), redisSerializer::deserialize); } }); } }
注意这里使用了
executeWithStickyConnection,因为 SCAN 需要在同一条连接上执行。
相关文章推荐
- 常用sql命令@oracle数据类型概括@权限、角色、用户的创建于使用@伪列及其注意事项
- 【Redis笔记】 第5篇: redis监控工具-redis sentinel使用说明及注意事项
- 使用静态库时需要注意的事项(gcc下程序调用静态库编译命令:主文件必须在静态库前面!)
- .Net下Redis使用注意事项
- fsck命令使用详解及特别注意事项
- 常用sql命令@oracle数据类型概括@权限、角色、用户的创建于使用@伪列及其注意事项
- Linux任务调度进程crond命令的使用方法和注意事项
- Android 抓包的一些命令 及 adb使用的一些注意事项
- 使用Redis的五个注意事项
- 使用Schtasks命令的注意事项
- 使用MySQL MySqldump命令导出数据时的注意事项
- 使用redis的5个注意事项
- 使用Redis的五个注意事项(命名)
- 交换机使用中,复制命令要注意的事项
- 使用nohup命令注意事项
- while read中使用ssh命令的注意事项
- (四) kendo UI 模板控件template使用与注意事项
- redis监控工具-redis sentinel使用说明及注意事项
- 使用Redis的五个注意事项