当前位置: 首页 > 面试题库 >

多个并发程序在同一哈希键上执行读/删除操作时的Redis行为

景英杰
2023-03-14
问题内容

我有一个程序(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();

我的假设是,当program_2在下一次运行program_1时删除HASH(带有KEY_1)时,它将再次创建HASH。这样对吗 ?


问题答案:

是。Redis是单线程的,事务会阻塞直到它们完成为止,因此,如果program_2启动,则当program1再次运行时,哈希KEY_1将不再存在。



 类似资料:
  • 我想在命令行上这样做,所以像这样的事情会很好: 上面的方法当然不适合散列。所以最后我需要打电话 以自动化的方式。

  • hdel key field 删除指定的hash field

  • 问题内容: 我有一堆带有前缀的散列,例如:“ prefix:” 在每个哈希值下面是一堆键,例如:“ cc_XX”,其中“ XX”是2个字母的代码。 我需要一些如何遍历所有redis散列的方法,并删除每一个cc_XX子键的某些方法,并且正在寻找一种cli / lua方式来做到这一点(两者都不好)。 任何建议将不胜感激。 问题答案: 下面的EVAL脚本应执行所需的操作: 您需要通过提供以下参数来调用它

  • 我只想知道,如果读取器和写入器线程访问ConcurrentHashMap的同一段,会发生什么情况。 情况1:读取器线程首先读取值时。 情况2:写入线程更新值,读取线程获取值。

  • 问题内容: 假设我有一些新闻存储在哈希中。我有不同的哈希值(每个哈希值代表一个消息): 我想用KEYS命令检索所有键: 密钥未排序的问题: 我想以正确的顺序检索键列表。我不确定哈希是否是我需要的结构。但是,根据redis文档: Redis哈希是字符串字段和字符串值之间的映射,因此它们是表示对象的理想数据类型(例如,具有多个字段(例如名称,姓氏,年龄等)的用户): 将我的新闻对象存储在散列中似乎是个

  • 并发线程组参数为: 目标并发:50(线程) RampUp时间:10秒 RampUp步数:5秒 保持目标速率时间(秒):5秒 线程迭代限制:无限 问题是,HTTP DELETE是幂等操作,也就是说,如果在相同的资源(即数据库中的记录)上进行inovked,它就没有多大意义。如何通过在URL中传递实体ID来删除数据库中的多个现有记录?例如: ...其中ID针对每个用户(即线程)递增。我的问题是如何自动