【发布时间】:2017-06-21 05:55:09
【问题描述】:
在 Redis 中存储嵌套的复杂 java 对象的最佳方法是什么。我们的做法如下。
我们正在使用Redisson Java 客户端库进行 Redis 交互。请看下面的代码:
try{
Config conf = new Config();
conf.useSingleServer().setTimeout(3600000);
conf.useSingleServer().setRetryInterval(3600000);
conf.useSingleServer().setAddress("redis://127.0.0.1:6379");
RedissonClient redisson = Redisson.create(conf);
RMap<String,Object> map = redisson.getMap("myCache");
MyClass myObject; // This is the big complex object.
map.put("key", myObject);
redisson.shutdown();
}catch (Exception ex) {
ex.printStackTrace();
}
同样,我们使用 get 从 redis 填充我们的 myObject,而不是 put。
由于大数据存储在redis中,我们增加了超时,我们得到了以下异常:
命令的命令执行超时:(EVAL) with params...
请同时回答以下问题:
- 这是将巨大的复杂 java 对象放入 Redis 的最佳方式吗? (数据可能在 1GB 左右)
- 我们的团队是Redis的新手,我们已经阅读了Redis给出的良好性能,我们应该使用它来存储复杂的数据还是仅在小的单个String作为值的情况下才好? (如果是,对我们的用例有什么建议)
谢谢。
【问题讨论】: