问题描述
在 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 个问题
- 执行 get 命令时 -
prodRet = prodMap.get("Prod101");
- Redis 是否需要进行两步查找 - 首先找到 “ProductTable”,然后在里面找到 prod 键?这是 不贵吗? - 在 Redis 集群环境中,整个“ProductTable”将在 1 个节点中的 1 个 SLOT 中结束。那么跨集群分片有什么用呢?是的,可能有其他表可以转到其他节点,但不能保证。
如果有人对此有更好的解决方案或更好的见解,请分享。还是我在这里遗漏了什么?
感谢您的帮助...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)