在Redis DB中保存数据的有效方法

时间:2016-08-19 08:24:25

标签: redis

在我的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或其他什么?

2 个答案:

答案 0 :(得分:5)

如果您需要做的只是获取并设置数据blob,那么直接使用GETSET是有道理的。如果内存使用是一个问题,你可以使用MessagePack而不是JSON。

如果您通常的访问模式不涉及整个对象,则可以选择使用哈希,因为这样可以单独获取和设置字段,从而减少需要传输的数据量。 (但它不会减少存储数据所需的总内存量。)

答案 1 :(得分:2)

哈希非常适合您的需求,因为您可以使用HSET和HGET直接访问各个字段的值,并且它们具有非常高的内存效率并针对此目的进行了优化。 http://redis.io/topics/memory-optimization#use-hashes-when-possible