【发布时间】:2018-11-17 16:01:36
【问题描述】:
我想知道最好的策略是管理存储在内存 Riak 存储桶类型中的会话相关数据的过期。
这个后端似乎支持 ttl(http://docs.basho.com/riak/kv/2.2.3/setup/planning/backend/memory/#ttl 和 http://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 类型的自定义架构?
【问题讨论】:
标签: riak riak-search