从 Redis (Jedis) 中删除整个 hset,有问题,因为它不会删除

Remove an entire hset from Redis (Jedis), having issues since it just won't remove

pipe.hset(uuid, "name", "Archie");

这是我如何使用 hset 的示例。还有大约 10 个其他属性(姓名、年龄等)。

我正在尝试删除整个 hset,例如删除 uuid,使其不再是密钥(密钥是正确的术语吗?)。

我试过通过管道单独删除每个元素;

for (String s : profileData)  {
                pipe.hdel("profile@" + uuid.toString(), s);
           }

但首先,这具有 O(n) 的时间复杂度,因此可以更高效;其次,它实际上对我不起作用,因为密钥仍然存在(认为这可能是我自己的编码错误)。

我看到过要求 hdelall 函数的问题,但我知道这个函数不存在。

我也试过用,

pipe.del(uuid);

但这没有任何作用 - 显然我使用不当。我假设它只会删除整个 hset 但它不会,它必须用于删除单个值吗?我不确定。

所以我的问题归结为; 如何使用 Jedis.

从 Redis 有效地删除整个 hset

谢谢。

使用JEDIS的delete方法怎么样

jedis.del(uuid);

查看此link了解更多详情

我不确定您的代码是什么样子,但我做了这个快速测试,它对我来说如预期的那样有效。

    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    import redis.clients.jedis.Pipeline;

    import java.time.Duration;
    import java.util.Set;       

public class TestRedisDelete {
    public static void main(String[] args) {

        TestRedisDelete redis = new TestRedisDelete();
        Pipeline p = redis.jedisPool.getResource().pipelined();
        p.hset("h1", "f", "v");
        p.hset("h2", "f", "v");
        p.hset("h3", "f", "v");
        p.del("h1");
        p.sync();

        Set<String> keys = redis.jedisPool.getResource().keys("*");
        System.out.println(keys);
    }

    final JedisPoolConfig poolConfig = buildPoolConfig();
    JedisPool jedisPool = new JedisPool(poolConfig, "127.0.0.1", 6379);

    private JedisPoolConfig buildPoolConfig() {
        final JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(10);
        poolConfig.setMaxIdle(10);
        poolConfig.setMinIdle(4);
        poolConfig.setTestOnBorrow(true);
        poolConfig.setTestOnReturn(true);
        poolConfig.setTestWhileIdle(true);
        poolConfig.setMinEvictableIdleTimeMillis(Duration.ofSeconds(60).toMillis());
        poolConfig.setTimeBetweenEvictionRunsMillis(Duration.ofSeconds(30).toMillis());
        poolConfig.setNumTestsPerEvictionRun(3);
        poolConfig.setBlockWhenExhausted(true);
        return poolConfig;
    }
}

输出:[h2, h3]