NoSQL 与 Redis

NoSQL 即 Not Only SQL,泛指非关系型数据库。一般 NoSQL 数据库通过 key-value 形式存储,使得其具备更强的扩展能力。

NoSQL 简介

NoSQL 通常用来解决系统的性能瓶颈。

NoSQL 一般会有如下特点:

  • 不遵守 SQL 标准
  • 不支持 ACID 事务
  • 复杂查询性能往往很高

NoSQL 有如下适用场景:

  • 对数据高并发地读写
  • 对海量数据的读写
  • 高可扩展性

NoSQL 也不适用以下场景:

  • 需要支持 ACID 事务
  • 对数据准确性、可靠性要求极高

常用 NoSQL

NoSQL 家族很大,下面列举一些常见到的。

Memcache

Memcache 是高性能的分布式内存缓存服务器。

  • 相对出现较早的 NoSQL 数据库
  • 数据都在内存中,不支持持久化
  • 仅支持简单的 key-value
  • 一般作为缓存使用

Redis

Redis 是一个 key-value 存储系统。

  • 几乎支持 Memcache 的所有功能
  • 数据都在内存中,支持持久化
  • 支持多种数据格式
  • 一般作为缓存使用

MongoDB

MongoDB 是高性能的文档型数据库。

  • 数据在内存中,内存空间受限时将数据存储到硬盘
  • 整体上是 key-value,但 value 支持复杂查询
  • 支持二进制数据及大对象
  • 一般用来存储非结构化数据

HBase

HBase 是 Hadoop 项目中的数据库。用于需要对大量数据进行随机、实时读写操作的场景。

HBase 的目标是处理数据量非常庞大的表,使其可以用普通计算机处理 10亿规模的数据。

Neo4j

Neo4j是一个高性能的 NoSQL图形数据库,它将结构化数据存储在网络上而不是表中。

  • 嵌入式的、基于磁盘存储
  • 支持2PC分布式ACID事务
  • 数据存储在图(网络)中而不是表格中

DB-Engine 数据库排名

DB-Engines 排名从多个维度计算各个数据库系统的流行程度,每月更新一次排行榜。

全球数据库排行榜DB-Engines

Redis 概述

Redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用 C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。

Redis 主要特点

  • Redis 是一个开源的key-value 存储系统
  • Redis 支持的数据类型包括 string、list、set、zset、hash 等
  • Redis 支持添加、删除、修改元素的诸多原子操作
  • Redis 数据都放在缓存中
  • Redis 支持数据持久化到磁盘
  • Redis 支持集群部署的高可用

Redis 应用场景

  • 热点数据缓存,减少关系型数据库压力
  • 分布式架构中 session 共享
  • 分布式架构中,分布式锁
转载请注明出处:码谱记录 » NoSQL 与 Redis
标签: