Redis 使用jedis如何缓存Java对象
使用Redis Java clientRedis 使用jedis如何缓存Java对象,redis,jedis,Redis,Jedis,使用Redis Java client如何缓存Java对象?您不能将对象直接存储到Redis中。因此,将对象转换为字符串,然后将其放入Redis。 为此,必须序列化对象。将对象转换为ByteArray并使用一些编码算法(ex base64encoding),将其转换为字符串,然后存储在Redis中。 在检索过程中,使用解码算法(例如:base64decoding)将字符串转换为字节数组并将其转换为对象。您应该将对象转换为json字符串以存储它,然后读取json并将其转换回您的对象 您可以使用Gs
如何缓存Java对象?您不能将对象直接存储到Redis中。因此,将对象转换为字符串,然后将其放入Redis。 为此,必须序列化对象。将对象转换为ByteArray并使用一些编码算法(ex base64encoding),将其转换为字符串,然后存储在Redis中。
在检索过程中,使用解码算法(例如:base64decoding)将字符串转换为字节数组并将其转换为对象。您应该将对象转换为json字符串以存储它,然后读取json并将其转换回您的对象 您可以使用Gson来执行此操作
//store
Gson gson = new Gson();
String json = gson.toJson(myObject);
jedis.set(key,json);
//restore
String json = jedis.get(key);
MyObject object=gson.fromJson(json, MyObject.class);
我建议使用更方便的lib来实现这一点:它是一个基于Redis的Java框架。 它比绝地武士有一些优势
Jackson-JSON
,Avro
,Smile
,CBOR
,MsgPack
,Kryo
,FST
,LZ4
,Snappy
和JDK序列化
RBucket<AnyObject> bucket = redisson.getBucket("anyObject");
// set an object
bucket.set(new AnyObject());
// get an object
AnyObject myObject = bucket.get();
RBucket bucket=redisson.getBucket(“anyObject”);
//设置对象
set(newanyobject());
//得到一个物体
AnyObject myObject=bucket.get();
例如,使用您最喜欢的封送器、kryo或json对其进行序列化。我想我的问题已经在这个线程中得到了回答。但是,这是对Redis的推荐做法吗?如果你真的想在Redis中存储对象,这是唯一的方法。你可以直接存储对象,或者将对象中的各个值拆分并存储为散列或其他形式。这是一个很好的答案。但您不一定需要转换为字符串。您可以将字节[]存储在Redis中,这样可以避免转换为字符串。关于将对象反序列化为字节[]的好文章这是在Redis中存储Java对象的最简单方法。。你太棒了!!!请注意,这会为您的应用程序增加一层复杂性,因为更改您的类别签名后,Redisson将无法“按原样”检索序列化对象@JorgeGarza,恐怕您弄错了。Redisson支持大约10个编解码器。例如,如果您使用JDK序列化编解码器,就不会有问题。您甚至可以编写自己的编解码器。你使用哪种编解码器?