Redisson RRingBuffer容量不能在同一个key下动态改变
Redisson RRingBuffer capacity cannot be changed dynamically under the same key
目前我正在开发我想使用 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,并且无法更改它。
RRingBuffer.setCapacity()
Redisson 3.13.5 添加的方法。因此,您可以在不复制缓冲区状态的情况下更改容量。
目前我正在开发我想使用 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,并且无法更改它。
RRingBuffer.setCapacity()
Redisson 3.13.5 添加的方法。因此,您可以在不复制缓冲区状态的情况下更改容量。