gpt4 book ai didi

java - Lettuce 多个响应式 Redis 存储和跨存储交易

转载 作者:可可西里 更新时间:2023-11-01 11:14:49 25 4
gpt4 key购买 nike

我正在学习 Redis for Java 是我认为我真正缺少的关于 Redis api 的东西。
假设我们有以下用于创建连接的代码:

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

这为键类型 String 和值类型 String 定义了一个客户端。
现在,当我需要处理多个 Redis 对象时,我该怎么做,不仅是 String/String,还包括不同类型的多个集合?
我应该为每个连接创建不同的连接吗?
我曾尝试使用响应式(Reactive)模板,但遇到了同样的问题,我会创建多个不同类型的实例。

在处理交易时,我不明白如何跨单个模板使用交易。
例如,我想将一个序列化的帖子插入到 Redis 存储中,例如:

Key postId | Value <post> 

但在一次交易中,我还想将 postId 添加到代表提要的集合中:

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

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

最佳答案

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

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

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

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

为了你的问题。如果键和值都是 String,您仍然应该能够不同类型的操作使用相同的连接 对于 Object 类型的键和值,您应该将它们序列化并将序列化结果传递给上述连接。

这是一个示例片段(没有运行/测试这个)。

RedisClient redisClient = RedisClient.create("redis://password@localhost:6379/0");
StatefulRedisConnection<String, String> connection = redisClient.connect();
RedisCommands<String, String> syncCommands = connection.sync();
syncCommands.multi();
syncCommands.sadd("topics", "value1", "value2", "value3"); // Puts topics in the set
syncCommands.set("posts", "serialized post"); // Puts serialized post
syncCommands.exec();

希望这对您有所帮助。

关于java - Lettuce 多个响应式 Redis 存储和跨存储交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53459068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com