目前我正在开发一个软件,我想用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的初始容量,不能改变它。
1条答案
按热度按时间lndjwyie1#
RRingBuffer.setCapacity()
方法见redisson 3.13.5。因此,您可以在不复制缓冲区状态的情况下更改容量。