Question

I'm using Jedis as the java client to connect to Redis Servers.

Question 1: It seems there is no method to get/set Object < ? extends Serializable> ? All the values must be String or byte[]?

Other clients like "JRedis" and Spymemcache(for memcached Server) could.

Question 2: If I use ShardedJedis, it cannot set auth/password? While Jedis class can (using auth(String password)).

Était-ce utile?

La solution

Regard Question 1: Jedis won't handle POJOs. You should serialize to a string or byte[] and use jedis to do that, although I won't recommend to store your java objects serialized, as you won't be able to use all Redis cool features. A different approach would be to use something like a object-hash mapper, like JOhm.

Regard Question 2: ShardedJedis will only support commands that run on a single key. This is to guarantee atomicity. If you want to run a specific command on a specific redis you should use shardedJedis.getShard('someky') which will return a Jedis instance that you can use. Another way to handle this, the recommended one, is to specify your password in the JedisShardInfo instances. You can see and example of this in the tests.

Autres conseils

Answer to question 1:

Redisson (Redis Java client) can work with POJO objects. And you don't need to serialize/deserialize object by yourself each time and work with connections (acquire/release). It's all done by the Redisson.

Here is an example:

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

or you can use LiveObjectService which stores POJO fields as keys in Redis hash object.

@REntity
public class MyObject {

   @RId
   private String id;
   @RIndex
   private String value;
   private MyObject parent;

   public MyObject(String id) {
       this.id = id;
   }

   public MyObject() {
   }

   // getters and setters

}

Redisson supports many popular codecs like Jackson JSON, Avro, Smile, CBOR, MsgPack, Kryo, FST, LZ4, Snappy and JDK Serialization.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top