在 Java 中使用 Redisson 在 Redis 中创建 SQL 类型表的任何替代解决方案

问题描述

在 Java 应用程序中使用 Redisson 在 Redis 中创建 sql 表结构的任何替代解决方案。例如一张产品表。

标准流程是实例化 RMapCache 并将产品添加到其中 - 像这样

    // save the prod to ProdTableCache
    final RMapCache<String,Product> prodMap;
    String prodMapKey = "ProductTable";
    final TypedJsonJacksonCodec prodCodec = new TypedJsonJacksonCodec(String.class,Product.class,new ObjectMapper());
    prodMap = redisson.getMapCache(prodMapKey,prodCodec);

    Product prod1 = new Product("Prod101","Mobile",1000);
    Product prod2 = new Product("Prod102","Tablet",2000);
    
    prodMap.put(prod1.id,prod1,2,TimeUnit.DAYS);
    prodMap.put(prod2.id,prod2,TimeUnit.DAYS);

这在 Redis 中会导致类似这样的事情

hscan "ProductTable" 0
1) "0"
2) 1) "\"Prod101\""
   2) "\x00\x00\x00\x00\x00\x00\x00\x00-\x00\x00\x00\x00\x00\x00\x00{\"id\":\"Prod101\",\"name\":\"Mobile\",\"price\":1000}"
   3) "\"Prod102\""
   4) "\x00\x00\x00\x00\x00\x00\x00\x00-\x00\x00\x00\x00\x00\x00\x00{\"id\":\"Prod102\",\"name\":\"Tablet\",\"price\":2000}"

虽然这解决了眼前的问题,但出现了 2 或 3 个问题

  1. 执行 get 命令时 - prodRet = prodMap.get("Prod101"); - Redis 是否需要进行两步查找 - 首先找到 “ProductTable”,然后在里面找到 prod 键?这是 不贵吗?
  2. 在 Redis 集群环境中,整个“ProductTable”将在 1 个节点中的 1 个 SLOT 中结束。那么跨集群分片有什么用呢?是的,可能有其他表可以转到其他节点,但不能保证。

如果有人对此有更好的解决方案或更好的见解,请分享。还是我在这里遗漏了什么?

感谢您的帮助...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)