假设我需要集中进行以下操作:
put(key, value)
其中value是<列名,列值>的映射
我不知道NoSQL很长时间,我所知道的是Cassandra插入(符合Bigtable论文中定义的api)和Redis“HSET”命令都可以做到。但这两种方式的优点和缺点是什么?那里有任何性能和可扩展性差异吗?
编辑:
我的要求类似于IM服务器---我需要存储会话数据,我希望所有这些都在内存中,以便轻松实现低延迟。会议持续最多2个小时。尚未考虑一致性要求。磁盘仅用于故障转移。丢失的数据并不可怕。我只需要更低的延迟。每秒操作---越多越好。
答案 0 :(得分:14)
redis和cassandra都可以用作键值存储。不同之处在于速度,规模和可靠性。
Redis最适合作为单个服务器,整个数据集都驻留在内存中。
Cassandra可以处理不适合内存的数据集,以及不适合单台机器的数据集。作为分布在多台机器上的一部分,cassandra更加可靠。 Cassandra可以处理机器故障,重建机器,在需要时为集群增加容量。
因为redis完全在内存中,并且读取/写入由单个机器提供(单个cassandra写入通常与多台机器通信),redis很可能会更快。
如果您的主要目标是速度,并且您不需要可靠地存储数据,并且您的数据集适合内存,则redis可能是更好的解决方案。