如何在Redis中使用java对象作为值

Ven*_*eki 13 jedis

我对Redis很新.

我下载了Jedis并将其添加到我的classpath中.但是,它没有提供一种将java对象存储为"值"的方法

我错过了什么或者Jedis没有提供将java对象存储为值的方法吗?

谢谢,-Venkat

Nik*_*rov 9

您可以使用基于Redis的Java框架 - Redisson轻松完成:

RBucket<AnyObject> bucket = redisson.getBucket("anyObject");
// set an object
bucket.set(new AnyObject());
// get an object
AnyObject myObject = bucket.get();

// supports some useful functions like:
bucket.trySet(object);
bucket.compareAndSet(oldObject, newObject);
AnyObject prevObject = bucket.getAndSet(new AnyObject());
Run Code Online (Sandbox Code Playgroud)

它处理序列化并使用连接,因此每次需要向Redis发送对象时都不需要处理它.Redisson为你做到了.您习惯使用Java对象时使用Redis.

它支持多种流行的编解码器(Jackson JSON,Avro,Smile,CBOR,MsgPack,Kryo,FST,LZ4,Snappy和JDK Serialization).

  • 您应该声明您是 redisson 的创始人和首席开发人员 (3认同)

小智 7

没有直接的手段-它只能通过序列化和存储结果字节数组来完成。如果要使用spring,请参阅http://static.springsource.org/spring-data/redis/docs/1.0.x/api/org/springframework/data/redis/serializer/package-summary.html。

干杯

  • 如果对象是第三方且不可序列化怎么办 (2认同)

小智 7

尽管您可以使用序列化完成所需的操作,但将java对象存储为值并不是重做的方法.

请参阅Jedis开发人员的回答:https://stackoverflow.com/a/12355876/2237351