Redison rringbuffer容量不能在同一密钥下动态更改

vx6bjr1n  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(342)

目前我正在开发一个软件,我想用redis来存储一些数据。具体来说,我想使用rringbuffer,在这里我最初设置容量,它可以在运行时更改。我的想法是创建一个新的rb,然后将oldrb中的数据移动到newrb例如,可能这是错误的:

// has some data that is created earlier with a capacity of 4
    final RRingBuffer<String> oldRB = cache.get(SOME_KEY);

    log.info(oldRB);

    // new ring buffer with  
    final RRingBuffer<String> newRB = redisson.getRingBuffer(A_NEW_RING_BUFFER);
    newRB.trySetCapacity(3);

    add the data from oldRB to newRB...

    cache.put(SOME_KEY, newRB)

    log.info(newRB)
    -------------------------------------------
    CONSOLE:
    info: ["one", "two", "three", "four", "five"]
    info: ["three", "four", "five"]

这是最初的工作,但似乎redis缓存这个rb的初始容量,不能改变它。

lndjwyie

lndjwyie1#

RRingBuffer.setCapacity() 方法见redisson 3.13.5。因此,您可以在不复制缓冲区状态的情况下更改容量。

相关问题