Cassandra 与 Redis 的对比

总体对比

Cassandra

Cassandra通过列/表的形式来组织数据,使用类SQL语言进行数据操作。Cassandra可以通过对列设置索引的方式提高数据的读取效率。Cassandra采用弱一致性策略,通过牺牲数据一致性来获得性能上的突破。在CAP(Consistency/Availability/Partition Tolerance)三角中主要体现了AP的特性。一般来说,Cassandra在写多于读的业务场景中能够更好地发挥作用。一般在银行、金融等领域使用比较多。

Redis

Redis在实时的大数据量读写方面,效率比Cassandra要高。Redis一般采用内存+磁盘的方式进行数据存储,并通过主-从架构实现横向扩展。与Cassandra相对的,在CAP三角中,Redis主要强调的是CP特性。如果业务需求中有涉及到大量的实时数据读写的,可以考虑使用Redis。由于Redis主要通过内存来保存数据,因此在系统设计过程中应考虑以下问题:

  1. 内存容量问题
  2. 数据丢失的问题

逐项特性对比

  Redis Cassandra
适用场景 实时读写大数据量并且要求速度很快 要求写比读更多的场景
数据结构 Key-value结构 表结构
操作 一般的Key-value操作,不支持范围查询、基于字段的查询等 通过CQL操作,可以进行基于列的条件查询
开发语言 C/C++ Cassandra是用Java开发的
存储 基于内存存储,磁盘保存备份 基于磁盘存储
其他

redis支持set/list/hash等数据结构

redis支持对集合的逻辑操作

redis支持事务

redis支持很多原子性操作

可以通过设置index,让数据以列或列集合的方式聚集

总结

总体而言,Redis所提供的特性主要是面对在线实时业务的。通过对Redis特性的灵活应用,可以实现诸如分布式锁、分布式信号量、分布式发号机、消息队列等基础服务。在数据服务方面,redis比较适用于读写速度要求高、数据量大、数据具有幂等性的应用场景。

Cassandra的主要应用场景是写入流量大于读取流量的场景。例如:金融交易、支付系统。以及作为数据仓库,收集系统业务数据、定时分析报表生成等场景。

你可能感兴趣的:(存储,redis,cassandra)