您的位置:首页 > 游戏 > 手游 > 福州关键词seo_东莞住建局官方网站_网络运营和网络营销的区别_网站seo平台

福州关键词seo_东莞住建局官方网站_网络运营和网络营销的区别_网站seo平台

2025/3/14 13:46:22 来源:https://blog.csdn.net/qq_31745863/article/details/144890583  浏览:    关键词:福州关键词seo_东莞住建局官方网站_网络运营和网络营销的区别_网站seo平台
福州关键词seo_东莞住建局官方网站_网络运营和网络营销的区别_网站seo平台

如下是redis中存储的数据结构

我想取key以favorites:结尾的所有数据

  • Redis 的 SCAN 命令用于迭代数据库中的键,支持通过模式过滤结果。模式规则基于 Redis 的通配符匹配语法,类似于文件名匹配规则:
    • *:匹配零个或多个字符。
    • ?:匹配一个字符。
    • [abc]:匹配括号中的任意一个字符。
    • [a-z]:匹配括号中的字符范围。
    • 如:ScanOptions.scanOptions().match(“*favorites:”)即为匹配以favorites:结尾的key
  • 因为我这个存储的Set类型的数据结构,所以用HashMap<String, Set> stringLongHashMap接数据,不同的数据类型换一下即可
    /*** 获取所有以 "favorites:" 结尾的键* @return Set<String> 返回所有以 "favorites:" 结尾的键*/public HashMap<String, Set<String>> favoriteSync() {HashMap<String, Set<String>> stringLongHashMap = new HashMap<>();// 获取 Redis 连接RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();try {// 执行 SCAN 操作long cursor = 0; // 初始化游标ScanOptions options = ScanOptions.scanOptions().match("*favorites:").build();// 执行 SCAN 命令do {Cursor<byte[]> scanResult = connection.scan(options);cursor = scanResult.getPosition();// 将扫描到的键添加到结果集合scanResult.forEachRemaining(key -> {// 获取当前 key 对应的所有成员(值)Set<byte[]> members = connection.sMembers(key);// 将 Set<byte[]> 转换为 Set<String>Set<String> memberStrings = new HashSet<>();for (byte[] member : members) {memberStrings.add(new String(member)); // 将字节数组转换为字符串}stringLongHashMap.put(new String(key), memberStrings);});} while (cursor > 0); // 当游标不为空时继续扫描} catch (Exception e) {e.printStackTrace();} finally {connection.close(); // 关闭连接}return stringLongHashMap;}

效果如下

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com