当前位置: 首页 > 知识库问答 >
问题:

使用Spring Boot在redis中嵌套键

公西苗宣
2023-03-14

我想在SpringBoot中使用quartz运行一个作业,其中多个线程将执行该方法。我想要的是将每次处理的结果都保存在redis中,这样我就可以知道这个工作有多好。

我想以这种形式保存redis中的数据。

{
  "2020-04-20": [
    {
      "item_1": {
        "success": "true",
        "message": ""
      }
    },
    {
      "item_2": {
        "success": "true",
        "message": ""
      }
    }
  ]
}

我想插入关键日期中的所有项目。因为有多个线程在工作,所以每个线程都在处理某个项目。所以所有项目都应该只插入到键(日期)中。

可能吗?

一种解决方案是一次又一次地重写(date)键的数据,首先从redis获取数据,在其上附加项,然后再次将键保存在redis中。

是否有其他方法,或者使用@cacheable、@cacheput等注释,以便创建嵌套密钥。自动将项目追加到(日期)键中。

共有2个答案

闾丘永春
2023-03-14

我使用redis set功能解决了这个问题。我在我的项目中使用绝地武士客户端。

It has very useful funtions like:-
 1) sadd => insertion of element.O(1)
 2) srem => deletion of element in set.O(1)
 3) smembers => getting all results.O(N)

这就是我需要的。在我的例子中,日期是键,其他细节(json的一个对象)是集合的成员。所以,当在集合中添加memeber时,我将json转换为数据并转换为字符串,当获取数据时,我将其从字符串转换回json。这解决了我的问题。

注意:-还有可以使用的列表功能。但是列表的时间复杂度不是O(1)。在我的情况下,我相信我不会有重复的,所以为我设置工作。

蒯华彩
2023-03-14

你考虑过RedisJSON吗?像这样的东西(我还没有测试过,我手边没有RedisJSON)

JSON.SET "2020-04-20" . []       // create the object once

JSON.ARRAPPEND "2020-04-20". '{  // every thread issues a command like this.
      "item": {
        "success": "true",
        "message": "thread 123"
      } }'

JSON.ARRAPPEND "2020-04-20". '{  // every thread issues a command like this.
      "item": {
        "success": "true",
        "message": "thread 456"
      } }'

JSON。ARRAPPEND应该是原子的。

 类似资料:
  • 我试图在脚本分数中使用嵌套值,但我在使它工作时遇到了问题,因为我无法通过doc访问它来迭代字段。此外,当我尝试在Kibana中像< code > _ type:images AND _ exists _:colors 一样查询它时,它不会匹配任何文档,即使当我单独查看所有文档时,该字段都清楚地出现在它们中。不过,我可以使用参数来访问它。_source,但是我看过可以慢一点慢一点,真的不推荐。 我知

  • 问题内容: 由于我是Redis的新手,因此我需要一些有关如何在REDIS中存储以下复杂json的指导,以便我们可以从REDIS中访问JSON的元素- 我需要以一种查询IP /主机名/ InstanceID的方式来存储它,以获取JSON中存在的所有元素。 我需要上述指导。 问题答案: 您无法直接做到这一点,但是幸运的是,有一个名为ReJSON的新Redis模块可以完全满足您的需求,并且它还具有不错的

  • 对我如何做这件事有什么建议吗? 更新:我将如下所示的方法添加到存储库中: 但是在代码中调用此方法时,我会得到以下错误。不确定我使用的Redis/Spring库是否有问题。我在用 null 当我执行findAll,findById时,它会返回结果。当我执行findByPersonalInfo_UserId()并传递像:Anthony.Turner或Ashleigh.Hayes这样的值时,什么也不会显

  • 问题内容: 我最近在nodejs中从memcached切换到Redis。我在node- memcached中喜欢的事情是我可以将整个javascript对象保存在内存中。可悲的是,我无法在Redis中做到这一点。例如,我得到以下对象: 使用3rd-Eden / node-memcached我可以做到: 然后 然后,我将按原样获得保存的对象。 Redis的问题在于,如果我像这样保存对象: 当我获得价

  • 我被困在将嵌套JS与宇宙数据库核心SQL API集成上。我知道有一个用于 Cosmos DB 的模块(https://github.com/nestjs/azure-database),但我需要数据架构来支持嵌套的 json,如下所示: 我认为@nestjs/azure-database不支持这一点(或者我可能错了),因为当我检查他们的示例和quickstart时,没有这样的json模式的示例。

  • 如何聚合一个值在嵌套在Elasticsearch嵌套位置?我对一个嵌套对象没有问题,但在嵌套对象内的嵌套我感到困惑... 样本数据: 欲望结果: 在索引映射中,我将cat_a和条目字段的类型设置为嵌套,当我从工具字段查询聚合时,在cat_a的根(级别1)中没有问题,并且可以工作,但是在聚合中在rx_a(这是在第2级)我不能检索结果,它或空或显示错误,因为我的错误查询。 查询级别1 agg: 如何处