在我的用例中数据相对较小(~1000.000字符串),但我必须尽可能快地访问(每纳秒计数),从多线程环境(在纯Java中实现)目前我正在使用redis(在localhost中) )我基本上对它很满意,但我想知道是否有更好的选择,因为redis拥有所有的网络资源,而且不是为多线程设计的.对于我的用例,持久性也是非常低的优先级.
我想在同一台机器上运行(根本没有网络)
我希望尽可能快
相对论小数据(我目前的Redis实例内存最大约为20MB)
我不想:
使用NoSql数据库以外的其他解决方案.
小智.. 6
有很多很棒的NoSQL数据库可以作为键值存储.每个都有独特的功能.
Redis在单个服务器中非常棒,并且易于安装和使用.但是,当您的数据超出单个服务器时,Redis很难进行分片和管理.
Thumbtack Technologies(纽约市)发表了两篇白皮书,比较了MongoDB,Cassandra和Aerospike的性能和可靠性.这些论文非常客观,使用YCSB基准测试工具完成的基准测试是在相同的硬件上进行的.
使用哪一个取决于您需要什么.MongoDB是一个功能丰富的键值存储,具有许多优秀的程序员功能.它提供对二级索引的查询,是一个非常好的文档存储.它是一个内存数据库,因此所有数据都必须适合RAM.Mongo可以聚集在一起,我听说如果你有一个大型集群,那就很难管理.
CouchBase非常适合存储大量数据,并且部分数据缓存在RAM中.因此,如果你所追求的值在缓存工作集中,它会很快.如果您的用例主要用于热数据并且不经常访问冷数据,那么这非常有用.
Cassandra非常适合"重写"用例.它易于使用,是一个很好的程序员经验.它是用Java编写的,并且在GC执行时会定期暂停,因此您需要调整GC参数.
Aerospike适用于在少量服务器中存储大量数据.它拥有单位数毫秒(或更好)的延迟,高可用性和高可靠性,它可能(恕我直言)最容易维护和扩展.它具有多代码感知功能,可识别NUMA节点并具有自我修复的零触摸群集技术.这对于"实时"用例来说非常棒,因为访问任何记录都需要快速且可预测.Aerospike是我的最爱.
Cassandra,CouchBase,MongoDB和Aerospike都具有"分析"功能,您选择哪一个取决于用例和性能范围.
有很多很棒的NoSQL数据库可以作为键值存储.每个都有独特的功能.
Redis在单个服务器中非常棒,并且易于安装和使用.但是,当您的数据超出单个服务器时,Redis很难进行分片和管理.
Thumbtack Technologies(纽约市)发表了两篇白皮书,比较了MongoDB,Cassandra和Aerospike的性能和可靠性.这些论文非常客观,使用YCSB基准测试工具完成的基准测试是在相同的硬件上进行的.
使用哪一个取决于您需要什么.MongoDB是一个功能丰富的键值存储,具有许多优秀的程序员功能.它提供对二级索引的查询,是一个非常好的文档存储.它是一个内存数据库,因此所有数据都必须适合RAM.Mongo可以聚集在一起,我听说如果你有一个大型集群,那就很难管理.
CouchBase非常适合存储大量数据,并且部分数据缓存在RAM中.因此,如果你所追求的值在缓存工作集中,它会很快.如果您的用例主要用于热数据并且不经常访问冷数据,那么这非常有用.
Cassandra非常适合"重写"用例.它易于使用,是一个很好的程序员经验.它是用Java编写的,并且在GC执行时会定期暂停,因此您需要调整GC参数.
Aerospike适用于在少量服务器中存储大量数据.它拥有单位数毫秒(或更好)的延迟,高可用性和高可靠性,它可能(恕我直言)最容易维护和扩展.它具有多代码感知功能,可识别NUMA节点并具有自我修复的零触摸群集技术.这对于"实时"用例来说非常棒,因为访问任何记录都需要快速且可预测.Aerospike是我的最爱.
Cassandra,CouchBase,MongoDB和Aerospike都具有"分析"功能,您选择哪一个取决于用例和性能范围.