当前位置: 首页 > 知识库问答 >
问题:

创建一个连接,将字符串存储为键,字节数组存储为值

仇炜
2023-03-14

我有一个Spring boot应用程序,可以连接到AWS上的Redis集群。我正在尝试莴苣,想创建一个StatefulRedisConnection,用于将键存储为字符串,而将值存储为字节数组。我尝试使用内置的ByteArrayCodec,但它将键和值都作为字节数组。

我刚接触莴苣,所以我不确定是否需要编写自定义编解码器。如果是,我该怎么写?是否会出现性能问题?还是我走错了路?

共有2个答案

谷越
2023-03-14

我使用StatefulRedisClusterConnection连接到redis集群。没错,我没有在那里写数据,只是读了它。但是这种阅读结构对我来说已经成功了。

final RedisCodec<String, byte[]> codec = RedisCodec.of(new StringCodec(), new ByteArrayCodec());
final StatefulRedisClusterConnection<String, byte[]> connection = client.connect(codec);
丌官瀚
2023-03-14

下面的代码将允许您使用字符串键和字节数组作为值。

public class StringByteCodec implements RedisCodec<String, byte[]> {

    public static final StringByteCodec INSTANCE = new StringByteCodec();
    private static final byte[] EMPTY = new byte[0];
    private final Charset charset = Charset.forName("UTF-8");

    @Override
    public String decodeKey(final ByteBuffer bytes) {
        return charset.decode(bytes).toString();
    }

    @Override
    public byte[] decodeValue(final ByteBuffer bytes) {
        return getBytes(bytes);
    }

    @Override
    public ByteBuffer encodeKey(final String key) {
        return charset.encode(key);
    }

    @Override
    public ByteBuffer encodeValue(final byte[] value) {
        if (value == null) {
            return ByteBuffer.wrap(EMPTY);
        }

        return ByteBuffer.wrap(value);
    }

    private static byte[] getBytes(final ByteBuffer buffer) {
        final byte[] b = new byte[buffer.remaining()];
        buffer.get(b);
        return b;
    }

}
 类似资料:
  • 问题内容: 像往常一样,我有责任到处寻找溶胶,但无济于事。 mysqli_fetch_assoc(显然)将我的数字存储为字符串。 通常,我不太关心,但是我的站点几乎是100%的ajax,并且它会移动大量数据,因此所有这些json’都开始累加。 如果我只是获取一个列值,则可以进行intval,但是我想获取具有相关列名的整个行。 有没有办法让mysqli_fetch_assoc(和PHP PDO的as

  • 问题内容: 在我的应用程序中,我得到了带有描述性预定义标签的“文章”(类似于帖子/推文/文章):即“困难”,“简单”,“红色”,“蓝色”,“业务”等 这些可用标签存储在一个表中,称为包含所有可用标签的“标签”。 每篇文章都可以使用多个标签进行标记,这些标签可以通过自定义管理界面进行编辑。 可能很容易将每个实体的标签捆绑到每个标签ID的字符串化数组中,并将其与文章记录一起存储在我的“文章”表中: 尽

  • 问题内容: 我有一个用Java创建的字节数组。它代表某些文件的内容。我不知道这个数组的最大大小。它可以是不同的大小。我想将其存储在mysql中。我应该在mysql中使用哪种类型? 问题答案: 使用,, Mysql为列选择正确的类型

  • 我有一个函数应用,定义如下 其中< code > let-test-this-in 和< code > let-test-this-out 是连接字符串为< code >“defaultendpointsprocol=”的存储帐户下现有存储队列的名称...;account name =…;AccountKey= ... "(直接从门户中的访问键-连接字符串复制而来)。我发布时生成的function

  • 我使用ServiceBustigger创建了一个Azure Function应用程序(监听主题订阅)。很好。但是现在我试图制作一个QueueTrigger来监听一个简单的队列,但是我得到了以下错误。 我也是这样做的。我在Visual Studio中创建了一个新项目,并将其指向我在Azure上的存储帐户。指定了队列名称。队列存在。我尝试创建一个新的共享访问策略。已将连接字符串复制到本地。设置。jso

  • 是否需要其他数据来生成ConnectionString?