我正在使用Jedis作为连接Redis服务器的Java客户端。
问题1:似乎没有方法可以获取/设置对象< ? extends Serializable> ?所有值必须是String或byte []?
其他客户端如“JRedis”和Spymemcache(对于memcached Server)可以。
问题2:如果我使用ShardedJedis,则无法设置身份验证/密码?虽然Jedis类可以(使用auth(String password))。
答案 0 :(得分:15)
关注问题1 :Jedis不会处理POJO。您应序列化为字符串或byte []并使用jedis来执行此操作,但我不建议将您的Java对象存储为序列化,因为您将无法使用所有Redis酷功能。另一种方法是使用类似对象哈希映射器的方法,如JOhm。
关注问题2 :ShardedJedis仅支持在单个密钥上运行的命令。这是为了保证原子性。如果要在特定redis上运行特定命令,则应使用shardedJedis.getShard('someky')
,它将返回您可以使用的Jedis
实例。
处理此问题的另一种方法是推荐的方法,即在JedisShardInfo
个实例中指定密码。
您可以在tests。
答案 1 :(得分:3)
回答问题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。
Redisson支持许多流行的编解码器,例如Jackson JSON
,Avro
,Smile
,CBOR
,MsgPack
,Kryo
,FST
,LZ4
,Snappy
和JDK Serialization
。