1

spymemcached 中内置了压缩功能。虽然 Jedis 是 Redis 的首选 Java 客户端,但是否有任何内置的压缩​​ API?

我没有找到任何 API。Redis 还有其他替代压缩技术吗?

4

1 回答 1

3

Jedis 实际上对 String 值做了一些操作,因为 java 使用 UTF-16 而 redis 使用 C-char 8 位编码。有一个名为 SafeEncoder 的类可确保一切正确。

如果你想压缩数据,你有 2 个选项,你可以在 redis 上编辑一些配置,比如 ziplists 和 intsets,或者你可以使用你选择的算法手动压缩你的值。

例如,我在 java 中使用了 kryo,它可以为您提供来自对象的字节数组,您使用 deflate 对其进行压缩,然后将其转换为 base 64 String 以将其持久化。为了取回你的对象,你得到base 64字符串,你得到字节数组,你膨胀它,然后使用kryo反序列化它。它完成了:)

编辑

您也可以跳过 base 64 操作并使用带有在 BinaryJedis.java 中实现的 bytearray 签名的 Jedis,这样会更干净、更快捷。

于 2013-10-17T10:03:22.720 回答