我正在使用Jedis作为连接Redis服务器的Java客户端.
问题1:似乎没有方法来获取/设置Object <?扩展Serializable>?所有值必须是String或byte []?
其他客户端,如"JRedis"和Spymemcache(用于memcached服务器)可以.
问题2:如果我使用ShardedJedis,它无法设置身份验证/密码?而Jedis类可以(使用auth(String password)).
小智 17
问题1:Jedis不会处理POJO.您应序列化为字符串或byte []并使用jedis来执行此操作,但我不建议将您的Java对象存储为序列化,因为您将无法使用所有Redis酷功能.另一种方法是使用类似对象哈希映射器的东西,比如JOhm.
问题2:ShardedJedis仅支持在单个密钥上运行的命令.这是为了保证原子性.如果要在特定redis上运行特定命令,则应使用shardedJedis.getShard('someky')该命令将返回Jedis可以使用的实例.处理此问题的另一种方法是推荐的方法,即在JedisShardInfo实例中指定密码.你可以在测试中看到这个例子.
对问题 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();
Run Code Online (Sandbox Code Playgroud)
或者您可以使用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
}
Run Code Online (Sandbox Code Playgroud)
Redisson支持许多流行的编解码器一样Jackson JSON,Avro,Smile,CBOR,MsgPack,Kryo,FST,LZ4,Snappy和JDK Serialization。
| 归档时间: |
|
| 查看次数: |
18621 次 |
| 最近记录: |