我正在学习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>
我发现的所有示例都在同一模板上执行事务,但是我不知道如何继续执行此操作。
指针表示赞赏。
答案 0 :(得分:1)
定义String, String
时的StatefulRedisConnection
部分仅适用于所使用的编解码器。定义时:
StatefulRedisConnection<String, String> connection = redisClient.connect();
StringCodec
使用预定义的RedisClient
在Java客户端和Redis之间传输数据。
如果要在Redis和Client之间来回传输数据时更改键和值的编码和解码方式,可以在此处使用自定义编解码器。有关RedisCodec here的更多详细信息。
针对您的问题。您仍然应该能够使用相同的连接进行不同类型的操作,前提是键和值都是{{1} } s。对于String
类型的键和值,您应该对其进行序列化并将序列化的结果传递给上述连接。
这是一个示例代码段(未运行/测试)。
Object
希望这会有所帮助。