从Redis(Jedis)删除整个hset,因为它无法删除而出现问题

时间:2018-10-14 11:59:39

标签: redis set pipeline jedis

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。

谢谢。

2 个答案:

答案 0 :(得分:0)

如何使用JEDIS的删除方法

jedis.del(uuid);

选中此link以获得更多详细信息

答案 1 :(得分:0)

我不确定您的代码是什么样子,但是我进行了此快速测试,并且按预期对我有用。

    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]