Redis for .NET 系列之实现分页需求

代码笔记:

                var tableName = "Table1";
                redisClient.AddItemToSortedSet(tableName, "1", 1);
                redisClient.AddItemToSortedSet(tableName, "2", 2);
                redisClient.AddItemToSortedSet(tableName, "3", 3);
                var pageIndex = 1;
                var pageSize = 5 ;
                //分页查询
                var value = redisClient.GetRangeFromSortedSetDesc(tableName, (pageIndex - 1) * pageSize, (pageSize * pageIndex) - 1);

 

转载于:https://www.cnblogs.com/gaobing/p/5284011.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现 Spring Boot 和 Redis Hash 的分页并条件查询,可以使用 Redis 的 Hash 数据结构来存储数据。以下是基本的步骤: 1. 根据条件查询需要的数据,将数据存入 Redis 的 Hash 中; 2. 使用 Redis 的 HSCAN 命令获取符合条件的数据; 3. 对获取到的数据进行分页处理。 以下是示例代码: ```java @Autowired private RedisTemplate<String, Object> redisTemplate; public List<Map<Object, Object>> queryData(int pageNo, int pageSize, String hashKey, String pattern) { Cursor<Map.Entry<Object, Object>> cursor = redisTemplate.opsForHash().scan(hashKey, ScanOptions.scanOptions().match(pattern).build()); List<Map.Entry<Object, Object>> list = new ArrayList<>(); while (cursor.hasNext()) { list.add(cursor.next()); } int startIndex = (pageNo - 1) * pageSize; if (startIndex >= list.size()) { return new ArrayList<>(); } int endIndex = Math.min(startIndex + pageSize, list.size()); List<Map.Entry<Object, Object>> subList = list.subList(startIndex, endIndex); List<Map<Object, Object>> result = new ArrayList<>(); for (Map.Entry<Object, Object> entry : subList) { Map<Object, Object> map = new HashMap<>(); map.put(entry.getKey(), entry.getValue()); result.add(map); } return result; } ``` 在这个示例中,我们使用 RedisTemplate 来操作 Redis,其中 hashKey 是存储数据的 Hash 键名,pattern 是查询的匹配模式,pageNo 和 pageSize 是分页的页码和每页数据量。 我们使用 scan 方法获取符合条件的数据,并指定分页参数。然后,我们对获取到的数据进行分页处理,使用 subList 方法获取分页数据,并将其转换成 Map 的列表返回。 需要注意的是,HSCAN 命令是基于游标的扫描,而不是基于索引的分页。因此,我们需要在代码中实现分页逻辑。同时,还需要注意 Hash 中每个字段的类型必须是字符串类型,否则无法使用 HSCAN 命令进行扫描。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值