我想使用Cassandra存储与会话相关的信息.我没有真正的HTTP会话 - 它是不同的协议,但是相同的概念.
Memcached会很好,但我想另外保留数据.
卡桑德拉设置:
Map<String,Set<String,String>>)数据示例:
session1:{ // CF row key
{prop1:val1, TTL:10 min},
{prop2:val2, TTL:10 min},
.....
{propXXX:val3, TTL:10 min}
},
session2:{ // CF row key
{prop1:val1, TTL:10 min},
{prop2:val2, TTL:10 min},
},
......
sessionXXXX:{ // CF row key
{prop1:val1, TTL:10 min},
{prop2:val2, TTL:10 min},
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,一致性不是问题,但性能可能是,尤其是磁盘IO.
由于我的会话中的数据离开的时间很短,我想避免将其存储在硬盘上 - 除了提交日志.
我有一些问题:
谢谢,Maciej
这就是我所做的 - 而且效果很好:
gc_grace to 0- 意味着在第一次压缩时删除列。这很好,因为数据没有被复制。在此设置中,将从内存表中读取数据,并且不会使用缓存。Memtable 可以分配足够的堆来保存我的数据,直到它过期甚至更长时间。
将数据刷新到 SSTable 后,压缩将立即删除过期的行,因为gc_grace=0.