首页 > 解决方案 > 使用sadd操作添加后如何检索Redis集合的所有键

问题描述

我正在使用 RedisCluster 访问信息。这是我的代码:

package kafka;

import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.ScanParams;
import redis.clients.jedis.ScanResult;

public class RedisExample {

public static void main(String[] args) {
    JedisCluster connection = JedisConnection.getInstance().getconnection();
    connection.sadd("mykeys_key1", "attr1:string");
    connection.sadd("mykeys_key1", "attr2:string");
    connection.sadd("mykeys_key2", "attr1:string");
    connection.sadd("mykeys_key2", "attr2:string");
    connection.sadd("mykeys_key3", "attr1:string");
    connection.sadd("mykeys_key3", "attr2:string");
    System.out.println(connection.smembers("mykeys_key1"));

}

}

输出:[attr2:string, attr1:string]

我想检索与模式匹配的所有键**mykeys_***

我正在寻找类似的东西:

connection.smembers("mykeys_*") ---这应该给我所有的钥匙,即mykeys_key3, mykeys_key2, mykeys_key1.

根据这些键,我将再次调用Redis connection.smember("mykeys_key3")以获取个人设置。

hkeys适用于散列,因此在这种情况下没有用。任何帮助将不胜感激。

标签: redis

解决方案


KEYS mykeys_*将返回与该模式匹配的键。

注意KEYS 文档页面上的警告:

警告:将 KEYS 视为仅应极其小心地在生产环境中使用的命令。当它针对大型数据库执行时,它可能会破坏性能。此命令用于调试和特殊操作,例如更改键空间布局。不要在常规应用程序代码中使用 KEYS。如果您正在寻找一种在键空间子集中查找键的方法,请考虑使用 SCAN 或集合。


推荐阅读