Redis行为,多个并发程序在同一个散列键上执行read/del

Sou*_*nta 2 concurrency transactions redis jedis

我有一个程序(program_1)(基于Jedis KEY_1)定期写入Redis HASH().我有另一个program_2定期执行的程序()(单独的JVM进程),在Redis事务中执行以下操作:

        Transaction transaction = redis.multi();
        //get the current entity table
        Response<Map<String, String>> currentEntityTableResponse = transaction.hgetAll(KEY_1);
        transaction.del(KEY_1);
        transaction.exec();
Run Code Online (Sandbox Code Playgroud)

我的假设是program_2在下次program_1运行时删除了HASH(使用KEY_1),它将再次创建HASH.它是否正确 ?

Eli*_*Eli 8

是.Redis是单线程的,事务阻塞直到完成,因此如果program_2启动,则当program1再次运行时,散列KEY_1将不再存在.