可以与Redis配合使用

时间:2018-07-09 09:01:45

标签: java redis snappy

在我通过Snappy压缩数据之后,将其存储到Redis。但是当我从Redis中取出它时,我发现数据是不同的。我不知道为什么会这样

2 个答案:

答案 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的实现。

  1. 快速压缩

  2. Kryo序列化

  3. 每个缓存键支持ttl

版本配置

  1. spring-data-redis
  2. 生菜芯
  3. snappy-java
  4. kryo
  5. 通用编解码器

应用程序属性

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));