hash - 在 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, 2, 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 是否需要进行 2 步查找 - 首先找到“ProductTable”,然后在其中找到 prod 键?这不贵吗? - 在 Redis 集群环境中,整个“ProductTable”将在 1 个节点中的 1 个 SLOT 中结束。那么跨集群分片有什么用呢?是的,可能有其他表可能会转到其他节点,但不能保证。
如果有人对此有更好的解决方案或更好的见解,请分享。或者我在这里错过了什么?
感谢你的帮助...
解决方案
推荐阅读
- layout - 带有缩放图像的 GridLayout 具有巨大的行间距
- javascript - 限制为一个小数点并将所有整数分数更新为“.0”,但分数为 10 和 0 除外
- cassandra - 使用列表创建用户类型
在卡桑德拉 - php - 如何获取以前交易的物品 paypal omnipay
- javascript - 在使用 jasmine 记者时,我得到“未找到规范”
- javascript - 在表格的每一行中选择第四个 td 并转换数据
- neo4j - 在 Cypher 查询中选择两个节点之一
- .net - 从 dotnet 应用程序中部署 SSRS 报告
- javascript - Mongoose findOneAndUpdate 只返回新的 $push 文档
- symfony - 在学说查询生成器中首先选择完全匹配