在我的Redis数据库中,我想保存以下数据:
{"id": "1", "data": "abc", "param": "p1"}
{"id": "2", "data": "def", "param": "p2"}
目前我按如下方式保存每一行(在Java中使用Jedis
客户端):
JEDIS.set(line.getId(),line.getLine());
所以,结果是这样的:
"1", "{"id": "1", "data": "abc", "param": "p1"}"
GET 1
{"id": "1", "data": "abc", "param": "p1"}
这是在Redis中保存此类数据的有效方法吗?也许最好将每一行转换为Set
或其他什么?
答案 0 :(得分:5)
如果您需要做的只是获取并设置数据blob,那么直接使用GET
和SET
是有道理的。如果内存使用是一个问题,你可以使用MessagePack而不是JSON。
如果您通常的访问模式不涉及整个对象,则可以选择使用哈希,因为这样可以单独获取和设置字段,从而减少需要传输的数据量。 (但它不会减少存储数据所需的总内存量。)
答案 1 :(得分:2)
哈希非常适合您的需求,因为您可以使用HSET和HGET直接访问各个字段的值,并且它们具有非常高的内存效率并针对此目的进行了优化。 http://redis.io/topics/memory-optimization#use-hashes-when-possible