20

我使用 Jedis 作为 java 客户端连接到 Redis 服务器。

问题1:似乎没有获取/设置 Object < 的方法?扩展可序列化> ? 所有的值都必须是 String 还是 byte[]?

其他客户端,如“JRedis”和 Spymemcache(用于 memcached 服务器)可以。

问题2:如果我使用ShardedJedis,它不能设置auth/password?而 Jedis 类可以(使用 auth(String password))。

4

2 回答 2

17

关于问题 1:Jedis 不会处理 POJO。您应该序列化为字符串或字节 [] 并使用 jedis 来执行此操作,尽管我不建议存储您的 java 对象序列化,因为您将无法使用所有 Redis 酷特性。另一种方法是使用对象哈希映射器之类的东西,例如JOhm

关于问题 2:ShardedJedis 将仅支持在单个键上运行的命令。这是为了保证原子性。如果你想在特定的 redis 上运行特定的命令,你应该使用shardedJedis.getShard('someky')它将返回一个Jedis你可以使用的实例。推荐的另一种处理方法是在JedisShardInfo实例中指定您的密码。您可以在测试中看到这方面的示例。

于 2012-09-10T16:34:13.810 回答
5

对问题 1 的回答:

Redisson(Redis Java 客户端)可以使用 POJO 对象。而且您不需要每次都自己序列化/反序列化对象并使用连接(获取/释放)。这一切都由 Redisson 完成。

这是一个例子:

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

或者您可以使用LiveObjectService将 POJO 字段存储为 Redis 哈希对象中的键。

@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 支持许多流行的编解码器,例如Jackson JSON, Avro, Smile, CBOR, MsgPack, Kryo, FST, LZ4,SnappyJDK Serialization.

于 2016-09-03T09:14:17.040 回答