short JSON 对象的压缩方法

Compression method for short JSON objects

我要在 redis 实例中存储一些 JSON。 JSON 对象中的 None 将非常长 - 考虑每个 redis 键一个对象,每个 JSON 对象可能有 20 组属性值对。

大致如下:

密钥 1:

{
 "id": "de305d54-75b4-431b-adb2-eb6b9e546011",
 "email": "joe.bloggs@gmail.com",
 "telephone": "01234567890",
 "age": 18
}

键 2:

{
 "id": "de305d54-75b4-431b-adb2-eb6b9e546012",
 "email": "john.doe@gmail.com",
 "telephone": "01234567890",
 "age": 19
}

这样的条目将有数百万个。

大约 12 个属性名称将是静态的,其余的会有所不同,我希望大多数值会有所不同(尽管有些可能是 true/false,一些可能匹配的低整数也许与域名有相似之处)。

是否有适合这种数据的压缩算法,最好是 Java 实现?也许我可以提供静态字典而不是像 LZW 尝试从每条数据中学习的东西?

您可以尝试使用比 json 更有效的替代方法,例如:

这看起来像我想要的:

http://docs.oracle.com/javase/7/docs/api/java/util/zip/Deflater.html#setDictionary(byte[])

在蜘蛛鲍里斯的评论之后,我打算尝试 HUFFMAN_ONLY 选项,但还没有。 FWIW 使用单个测试数据样本我看到压缩字节 [] 是原始字节的 ~20%。