Riak和内存后端:处理过期和修剪

时间:2018-11-17 16:01:37

标签: riak riak-search

我想知道最好的策略是管理存储在内存Riak存储桶类型中的与会话相关的数据到期。

该后端似乎支持ttl(http://docs.basho.com/riak/kv/2.2.3/setup/planning/backend/memory/#ttlhttp://docs.basho.com/riak/kv/2.2.3/configuring/backend/#memory-backend),但是第二个链接的文档指出:

  

“该对象的时间用完后,在下次读取时将其删除   它的关键。”   如果该对象不再被读取怎么办?它会留在内存中吗?但是,我猜想它会在达到memory_backend.max_memory_per_vnode限制时最终被销毁。

存储到期时间戳是否是另一个相关选项?在这种情况下,将通过定期搜索“旧”时间戳的过程来进行修剪:

:riakc_pb_socket.search(pid, "expirable_token", "exp_counter:[* TO 1542468475]")
# then we delete them

我已经通过将时间戳存储在计数器中进行了测试,因为不可能对索引为字符串的寄存器进行范围请求

iex(34)> :riakc_counter.increment(System.system_time(:second), :riakc_counter.new())
{:counter, 0, 1542468373}

但是,我不确定计数器是否设计用于存储整数。在Riak数据类型中存储整数的最佳实践是什么?具有适当的int类型的自定义架构已声明?

1 个答案:

答案 0 :(得分:0)

我建议使用其他后端。位桶过期非常有效,可以非常精确地配置。 leveldb有效期足够好。