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

重做块直到密钥存在

巫欣荣
2023-03-14
问题内容

我是Redis的新手,我想知道是否有一种方法可以await get通过键的值来获取值,直到键存在为止。最小代码:

async def handler():
    data = await self._fetch(key)

async def _fetch(key):
    return self.redis_connection.get(key)

如你所知,如果这种key犯规存在,它returnNone。但是由于在我的项目中,将set键值对与redis绑定发生在另一个应用程序中,因此我希望redis_connection
get方法能够阻止直到key存在。这样的期望是否有效?


问题答案:

如果不在客户端上实现某种池化 redis GET, 就无法做您想做的事情。在这种情况下,您的客户将必须执行以下操作:

async def _fetch(key):
    val = self.redis_connection.get(key)
    while val is None:
       # Sleep and retry here
       asyncio.sleep(1)  
       val = self.redis_connection.get(key)
    return val

但是,我要求您完全重新考虑您用于此问题的模式。在我看来,您需要执行诸如Pub / Sub
https://redis.io/topics/pubsub之类的操作。

因此,执行 SET 的应用程序将成为发布者,而执行 GET 并等待密钥可用的应用程序将成为订阅者。

我对此进行了一些研究,看起来您可以使用asyncio_redis来做到这一点:

  • 订阅者https://github.com/jonathanslenders/asyncio-redis/blob/b20d4050ca96338a129b30370cfaa22cc7ce3886/examples/pubsub/receiver.py。

  • 发件人(发布者):https : //github.com/jonathanslenders/asyncio-redis/blob/b20d4050ca96338a129b30370cfaa22cc7ce3886/examples/pubsub/sender.py

希望这可以帮助。



 类似资料:
  • 别名s1as被上述命令中使用的别名所取代,即server-alias(在下,上的SSL选项卡)。 jks和cacerts.jks存储在下。 下的JVM选项,上的JVM选项选项卡,以下选项 GlassFish服务器不喜欢什么? 它只在使用别名重新生成这些文件keystore.jks和cacerts.jks时工作,但当使用不同的别名(证书昵称)时,它会失败,出现给定的异常。GlassFish似乎将这个

  • 问题内容: 我需要将2个密钥存储到KeyStore中,这是相关代码: 尽管我得到了执行,但“私钥必须带有证书链” 那到底是什么?以及我将如何生成它? 问题答案: 您还需要提供私钥条目的证书(公钥)。对于由CA签名的证书,链是CA的证书和最终证书。对于自签名证书,您只有自签名证书。 示例: 要生成证书,请点击以下链接: 示例:

  • 是的。这是这个问题的重复。然而,答案是错误的和误导性的。答案建议将密钥写入一个其他应用程序可以访问该文件的文件。如果我没看错的话,keystore的目的是生成并存储只能被你的app看到的私钥,所以我甚至不确定为什么答案在那个问题中被接受了。 另一个问题是关于加密和解密的,但并不是真正关于将数据保存到密钥存储区的问题。 好的,所以我发现一旦您调用就可以自动生成密钥,就像这个应用程序中演示的那样。但我

  • 我按照github教程中的指示创建了键,在github中注册了它们,并尝试显式地使用ssh-agent--但是每次我尝试进行拉或推操作时,git都会继续向我询问密码短语。 原因可能是什么?

  • 我一直在寻找将键绑定附加到JButton的答案,但仍然没有成功。我有以下由两个类组成的简单程序。我尝试了几种方法使用getInputMap()和getActionMap(),但都没有成功。我希望它执行以下操作:当我按键盘上的键“1”时,它会按JButton btn1,当我按键“2”时,它会按JButton btn2(因此JLabel上会出现1或2)。 //类1:// 更新:(我还没有15岁的名声,

  • MySQL Server Enterprise edition与Hashicorp集成,在静止状态下加密数据。加密密钥存储在HashiCorp存储库中,如MySQL文档中所述。 基于HashiCorp文档[1][2],我们可以使用Azure密钥库来存储秘密。 是否可以集成mysql-hashicorp-Azure密钥库 MySQL Enterprise Edition使用hashicorp加密 加