在Redis数据库中高效保存数据的方法

3

我想在我的Redis数据库中保存以下数据:

{"id": "1", "data": "abc", "param": "p1"}
{"id": "2", "data": "def", "param": "p2"}

目前我正在使用Jedis客户端在Java中将每一行保存如下:

JEDIS.set(line.getId(),line.getLine());

因此,结果大致如下:
"1", "{"id": "1", "data": "abc", "param": "p1"}"

GET 1
{"id": "1", "data": "abc", "param": "p1"}

在Redis中存储这种数据的方式是否高效?也许将每一行转换为Set或其他形式会更好?


当然,这是一种高效的保存方式。但是你打算如何访问它?在选择正确的数据结构时,这是最重要的事情。 - Kevin Christopher Henry
@KevinChristopherHenry:我对Redis还很陌生,但我的想法是通过ID从Redis中读取Json字符串,然后在我的代码中进行解析。但是,我不确定是否有任何方法可以避免此解析并且消耗更少的内存。问题是现在我也在消耗额外的内存资源来保存Json字符串的标点符号(例如{}")。 - HackerDuck
听起来你需要的是 MongoDB。 - for_stack
@for_stack:我被迫使用Redis。实际上这是为了缓存。 - HackerDuck
2个回答

6
如果你只需要获取和设置数据块,那么直接使用GETSET是有意义的。如果内存使用是一个问题,你可以使用MessagePack而不是JSON。
如果你通常访问模式不涉及整个对象,则另一种选择是使用哈希表,因为这将允许你逐个获取和设置字段,从而减少需要传输的数据量。(尽管这不会减少存储数据所需的总内存量。)

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接