Redis 是归类为 NoSQL 的,所以需要先了解一下什么是 NoSQL
MySQL、Oracle、等都是关系型数据库,
NoSQL的全称是 Not Only SQL,即它除了做数据存储以外,还有其它的一些功能。
传统项目使用纯关系型数据库,访问量不会很大,并发量也不会很高。
随着互联网和大数据的发展,已经不适合把超大量的数据提供出去做并发型的查询。因为数据库单表的性能是有限的。普通关系型数据库只能达到 400-500 万,一旦数据量庞大了以后,NoSQL就横空出世了。
NOSQL 水平(横向)扩展方便高效,增加删除缓存能够做到非常的高效
高性能读取
可以搭建集群,实现高可用
存数据,做缓存(缓存可以持久化)。
NoSQL常见分类
键值对数据库 Reids 、Memcache
列存储数据库 Hbase 、Cassandra
文档型数据库 MongoDB
图形数据库 Neo4J、FlockDB
什么是分布式缓存
在高并发的场景下,通过分布式缓存,是可以提升读取速度的。(写操作是需要入库的,遵循二八原则(在互联网的环境下,百分之八十的操作都是读操作))
分布式计算领域,将系统垂直的进行拆分以后,就需要使用缓存来提升系统整体的读性能。
为数据库降低查询压力(缓存承担查询功能之后,数据库的查询压力就会降低,数据库是整个项目的瓶颈所在)
跨服务器缓存
内存式缓存。内存的读取效率是远远高于硬盘存储的数据的。可以让大多数的请求去命中缓存,而少量的请求在有需求的时候才会去访问到数据库,从而就可以增加提高整个系统的并发量,能够减少数据库的压力,为其进行降压。
什么是 Redis
NoSQL
分布式缓存中间件
key-value 存储。类似于 hashMap,可以存储一些字符串,list、set集合等数据。
提供海量数据存储访问。
数据存储在内存里,读取更快。
非关系型 、分布式、开源、水平扩展。
Redis、Memcache、Ehcache技术选型
Ehcache 适用于单体应用
优点:
基于java开发,和java项目整合"健壮性"更好;
在JVM中,使用Ehache速度更快,性能更高
整合简单,轻巧,方便
MyBatis,Hibernate 都会使用 Ehcache,整合方便
缺点:
不支持集群
不支持缓存共享,集群使用起来非常复杂,维护也非常不方便;
设计到缓存恢复等;
不支持分布式;
Memcache 只能做缓存
优点:
简单的key-value存储
仅仅支持字符串(是缺点也是优点)
内存使用率比较高
多核处理,多线程
Redis是单线程的
缺点:
无法容灾
数据服务持久化
Redis 可做缓存、存储 支持数据持久化
优点:
丰富的数据结构
支持持久化
支持主从同步,故障转义
内存数据库,查询效率高
缺点:
单线程(存储大数据性能较低,但是小数据比Memcache更好)
单核(对企业中的多核服务处理器的利用率不高)
单核单线程更加简单不容易出错