生菜多个反应式Redis商店和跨商店的交易

时间:2018-11-24 14:17:06

标签: java redis lettuce

我正在学习Java的Redis,我认为我确实缺少Redis api。
假设我们有以下用于创建连接的代码:

RedisClient redisClient = RedisClient
  .create("redis://password@localhost:6379/");
StatefulRedisConnection<String, String> connection
 = redisClient.connect();

这为键类型String和值类型String定义了客户端。
现在,当我需要处理多个Redis对象时,不仅要处理String / String,而且要处理多个具有不同类型的集合,该怎么办?
我应该为每个连接创建不同的连接吗?
我试图使用反应式模板,但是遇到了我将创建具有不同类型的多个实例的相同问题。

在处理事务时,我不了解如何在单个模板中使用事务。
例如,我想将序列化的帖子插入Redis存储中,例如:

Key postId | Value <post> 

但是在一次交易中,我还想在代表供稿的集合中添加postId:

Key topic | Value <set with post Id's>

我发现的所有示例都在同一模板上执行事务,但是我不知道如何继续执行此操作。
指针表示赞赏。

1 个答案:

答案 0 :(得分:1)

定义String, String时的StatefulRedisConnection部分仅适用于所使用的编解码器。定义时:

StatefulRedisConnection<String, String> connection = redisClient.connect();

StringCodec使用预定义的RedisClient在Java客户端和Redis之间传输数据。

如果要在Redis和Client之间来回传输数据时更改键和值的编码和解码方式,可以在此处使用自定义编解码器。有关RedisCodec here的更多详细信息。

针对您的问题。您仍然应该能够使用相同的连接进行不同类型的操作,前提是键和值都是{{1} } s。对于String类型的键和值,您应该对其进行序列化并将序列化的结果传递给上述连接。

这是一个示例代码段(未运行/测试)。

Object

希望这会有所帮助。