【问题标题】:Cassandra -What is really happens once Key-cache get filledCassandra - 一旦 Key-cache 被填满,真正会发生什么
【发布时间】:2014-11-04 07:56:37
【问题描述】:

假设我已经配置了 1 Mb 的 key-cache(假设它可以容纳 13000 个 key)。

然后我在一个列族(比如 20000)中写了一些记录。

然后首先读取它(所有键按用于写入的顺序依次读取),并开始将键存储在键缓存中。

当读取达到@13000 时,键缓存被完全填满。

读取下一个键时,键缓存会发生什么? (为新读取的密钥删除了哪个密钥?)。

Key-Cache 遵循 FIFO 或 LIFO 还是随机输出?。

【问题讨论】:

    标签: caching cassandra key-cache-size


    【解决方案1】:

    密钥缓存在下面使用ConcurrentLinkedHashMap,因此它的驱逐策略是LRU(最近最少使用)。

    https://code.google.com/p/concurrentlinkedhashmap/#Features

    https://code.google.com/p/concurrentlinkedhashmap/wiki/Design#Beyond_LRU

    【讨论】:

    • 由于对链接 Hashmap 中存在的所有键只执行一次读取,因此删除可能会变得随机?还是先进先出?
    • 在这种特殊情况下,第一个插入的密钥将被驱逐。
    • 当所有的key都存储为它的hash时,我们能不能具体说1mb的keucache可以存储这么多的key(我说的是13000)
    • 缓存测量的不是哈希值,而是键本身的大小和值的大小。 size = key.unsharedHeapSize() + value.unsharedHeapSize();
    • 感谢所有回复...密钥缓存上下文中的值是该密钥的稳定索引?
    猜你喜欢
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 2017-05-19
    相关资源
    最近更新 更多