首页 > 技术文章 > redis

StingLon 2018-10-19 15:33 原文

redis

什么是缓存

高速缓冲存储器一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。就是为了提高访问效率,将数据放在快速存储器中,也就是内存中.

缓存分类:

JVM缓存和Nosql缓存

JVM缓存:

 

Mybatis和Hibernate底层二级缓存使用的是OSCache,EhCache。属于JVM内置缓存,比如Session缓存,Mybatis默认使用OSCache,Hibernate默认使用EhCache。都是可以配置的。

 

OSCache:针对JSP页面缓存(一般用于),Mybatis使用OSCache

 

EhCache:针对数据库访问层缓存

 

缺点:内存溢出,没有持久化机制,分布式下数据共享

 

 

Nosql缓存:

NoSQL  Not Only SQL 的缩写,意即"不仅仅是SQL"的意思,泛指非关系型的数据库。强调Key-Value Stores和文档数据库的优点,而不是单纯的反对RDBMS

 

NoSQL产品是传统关系型数据库的功能阉割版本,通过减少用不到或很少用的功能,来大幅度提高产品性能

 

NoSQL产品 redis,Membase,mongodb ,HBase 

 

mongodb对数据的操作大部分都在内存中。但mongodb并不是单纯的内存数据库。甚至个人认为不属于内存数据库。相反,redis就是一个不折不扣的内存数据库了,mysql一个不折不扣的硬盘数据库。

 

 

 

 

Redis

 

什么是Redis

 

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

(Redis的存储是以key-value的形式的。Redis中的key一定是字符串,value可以是string、list、hash、set、sortset这几种常用的。)

 

Redis 与其他 key - value 缓存产品有以下三个特点:

 

Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

 

Redis不仅仅支持简单的key-value类型的数据,同时还提供listsetzsethash等数据结构的存储。

 

Redis支持数据的备份,即master-slave模式的数据备份。

 

回答:非关系型内存数据库,效率比IO数据库高,主要作用是减轻数据库访问压力。

 

 

可以发现这不就是Java的Map容器所拥有的特性吗,那为什么还需要Redis呢?

 

  • Java实现的Map是本地缓存,如果有多台实例(机器)的话,每个实例都需要各自保存一份缓存,缓存不具有一致性
  • Redis实现的是分布式缓存,如果有多台实例(机器)的话,每个实例都共享一份缓存,缓存具有一致性
  • Java实现的Map不是专业做缓存的,JVM内存太大容易挂掉的。一般用做于容器来存储临时数据,缓存的数据随着JVM销毁而结束。Map所存储的数据结构,缓存过期机制等等是需要程序员自己手写的。
  • Redis是专业做缓存的,可以用几十个G内存来做缓存。Redis一般用作于缓存,可以将缓存数据保存在硬盘中,Redis重启了后可以将其恢复。原生提供丰富的数据结构、缓存过期机制等等简单好用的功能。

 

 

Redis应用场景

 

   主要能够体现 解决数据库的访问压力。

 

   例如:短信验证码时间有效期,session共享解决方案,Token

 

 

 

安装Redis

 

推荐阅读