在我通过Snappy压缩数据之后,将其存储到Redis。但是当我从Redis中取出它时,我发现数据是不同的。我不知道为什么会这样
答案 0 :(得分:1)
是的,Snappy压缩算法可以与Redis一起使用。实际上,您可以使用任何压缩算法。就Redis而言,它只是字节。在编程语言中,redis所谓的“字符串”更传统地称为“字节数组”。
如果看到不同的值,则很可能是您读取值的方式存在问题。一些Redis客户端库尝试将响应解码为UTF-8,这不是您想要的。查看您的客户端库文档,并使用允许您将值设置和获取为字节数组的方法。
答案 1 :(得分:-1)
是的。如果您的问题是关于Java的。您可以在此处查看此存储库,以及我为压缩和序列化所做的工作java-spring-redis-compression-snappy-kryo
java-spring-redis-compression-snappy-kryo
这是Java Spring Boot Redis集群数据配置的示例。
这是Redis Cluster和Redis Cache Manager的实现。
快速压缩
Kryo序列化
每个缓存键支持ttl
版本配置
应用程序属性
data.rediscluster.nodes=redis1.foo.com:6379,redis2.foo.com:6379,redis3.foo.com:6379,redis4.foo.com:6379,redis5.foo.com:6379,redis6.foo.com:6379
data.rediscluster.ttl=2700
data.rediscluster.redirects=3
使用方法
RedisCacheConfiguration.defaultCacheConfig()
.disableKeyPrefix()
.disableCachingNullValues()
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(stringRedisSerializer()))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(genericSnappyRedisSerializer()))
.entryTtl(Duration.ofSeconds(ttl));