我使用 Jedis 作为 java 客户端连接到 Redis 服务器。
问题1:似乎没有获取/设置 Object < 的方法?扩展可序列化> ? 所有的值都必须是 String 还是 byte[]?
其他客户端,如“JRedis”和 Spymemcache(用于 memcached 服务器)可以。
问题2:如果我使用ShardedJedis,它不能设置auth/password?而 Jedis 类可以(使用 auth(String password))。
我使用 Jedis 作为 java 客户端连接到 Redis 服务器。
问题1:似乎没有获取/设置 Object < 的方法?扩展可序列化> ? 所有的值都必须是 String 还是 byte[]?
其他客户端,如“JRedis”和 Spymemcache(用于 memcached 服务器)可以。
问题2:如果我使用ShardedJedis,它不能设置auth/password?而 Jedis 类可以(使用 auth(String password))。
关于问题 1:Jedis 不会处理 POJO。您应该序列化为字符串或字节 [] 并使用 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();
或者您可以使用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
,Snappy
和JDK Serialization
.