前言

最后更新于:2021-06-18 14:06:35

NoSql

全称为Not Only Sql,就是说它不仅仅是sql,除了做一些数据方面的存储以外,还有其他的一些功能。

  • 传统项目
    传统的项目,使用的为纯数据库,从jsp到controller,再到service,再到dao,这样就完成了一次数据库的交互,这样对于数据库的访问量并不是很大,也没有什么并发,所以只需要使用一个纯数据库即可。
  • 为互联网和大数据而生
    随着移动互联网,大数据和云计算的出现,普通的关系型数据库已经不适合将超大量的数据提供一个并发的查询。
  • 水平(横向)扩展方便高效
    构建集群只需要加节点,加机器即可,比普通数据库方便很多。
  • 高性能读取
    以redis举例,每秒读取高达10w次,而对于mysql是达不到这么高的效率的。
  • 高可用
    可以搭建集群。
  • 存数据、做缓存
    除了做数据的存储以外,还可以缓存数据,并且提供高性能的读取,而且缓存可以做持久化。

NoSql的常见分类

  • 键值对数据库
    Redis、Memcache,属于key-value形式的数据库,效率非常高效
  • 列存储数据库
    Hbase、Cassandra,大数据领域
  • 文档型数据库
    MongoDB、CouchDB, 分布式文件存储数据库,可以存储文档。
  • 图形数据库
    Neo4j、FlockDB

分布式缓存

提高读取速度性能
通过分布式缓存,可以提高读取数据的速度。通过提高数据读取的速度,整个系统的性能也会大大提高。

为数据库降低查询压力
根据互联网二八原则,提升了数据的读取性能,就等于是为数据库降低了查询压力。

跨服务器缓存
因为是分布式缓存,所以只要是服务器的任意节点都可以拿到缓存的数据,快速响应用户的一个需求。

内存式缓存
数据存储在内存中,所以读写速度会远远大于硬盘数据库的。

Redis

  • 属于NoSql
  • 分布式缓存中间件
  • 存储方式为key-value存储
  • 提供海量的数据存储访问
  • 数据存储在内存里,读取更快
  • 非关系型、分布式、开源、水平扩展

缓存方案对比

Ehcache

优点
1. 基于java开发,对于整合一些java项目,健壮性更好
2. 基于JVM缓存,在JVM中使用,速度更快,性能更高
3. 整合起来简单、轻巧、方便
缺点
1. 不支持集群
2. 不支持分布式

Memcache

优点
1. 简单的key-value存储,只支持存储字符串
2. 内存使用率比较高
3. 多核处理,多线程
缺点
1. 无法容灾,数据无法做到持久化,服务器宕机后,无法恢复数据。

Redis

优点
1. 丰富的数据结构
2. 持久化
3. 可以支持主从同步、故障转移
4. 内存数据库
缺点
1. 单线程,存储大数据量时,性能会有所降低
2. 单核,单台服务器无法充分利用多核服务器的CPU