Jedis可以获取/设置Java POJO吗?

时间:2012-09-05 10:11:23

标签: jedis

我正在使用Jedis作为连接Redis服务器的Java客户端。

问题1:似乎没有方法可以获取/设置对象< ? extends Serializable> ?所有值必须是String或byte []?

其他客户端如“JRedis”和Spymemcache(对于memcached Server)可以。

问题2:如果我使用ShardedJedis,则无法设置身份验证/密码?虽然Jedis类可以(使用auth(String password))。

2 个答案:

答案 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 JSONAvroSmileCBORMsgPackKryoFSTLZ4SnappyJDK Serialization