1.1 Redis 简介
Redis 是现在最受欢迎的 NoSQL 数据库 之一,Redis 是一个包含多种数据结构、支持网络、基于内存、可选持久性的 键值对 (Key - Value)存储数据库
从广义来讲,Redis 可以称为数据库。
Redis 也符合“按照数据结构来组织、存储和管理数据的仓库”的定义,可以说是一种数据库
NoSQL 是各种资料中常见的词,它是"Not Only SQL"的缩写,泛指非关系型数据库。
我们常用的 MySQL、SqlServer 都是关系型数据库,这些数据库一般用来存储重要信息,应对普通的业务是没有问题的。但随着互联网的高速发展,传统的关系型数据库在应付超大规模,超大流量以及高并发的时候力不从心,这就需要使用到像 Redis 这样的 NoSQL 数据库。
下面是 Redis 的 Logo:
这个 Logo 很像一个积木盒子,里面放了各种各样形状的玩具。这也预示着 Redis 的作用:存储任意内容。
1.2 Redis 使用场景
Redis 被称为数据库,但不一定跟 MySQL 冲突,系统不是只能使用二者之一。
Redis 的 常见 的、 核心 的使用场景是:作为数据缓存(cache)。因为其 数据读取速度快,能够大大的 提高运行效率,所以 Redis 在大多数情况下被称作“缓存”。
Redis 的“缓存”叫法更明确,“数据库”叫法比较专业
缓存,顾名思义,就是把数据存放在缓冲区,当查找数据时,首先会在缓存中进行查找,如果存在,就获取;否则就访问数据库。频繁的从缓存中读取数据,减少访问数据库的次数,可以提高运行效率。
读写缓存内容值 Value,都是通过 Key 来完成的。用 Key 进行查询的方式非常简单,不像关系型数据库可以写各种查询语句用各种调解进行查询。
下面的章节会详细讲。当前可以参考 Java Map 理解 Key - Value 结构。
所以,Redis 缓存与 MySQL 等数据库并不冲突,而是有益的补充。
有时候你会看到某些资料称 Redis 为“缓存数据库”,也不要觉得奇怪
Redis 速度快的第一个直观原因是,数据存储在计算机的内存中,基于内存当然读写速度快,但内存空间有限,所以数据不宜永久保存。
计算机重启后数据消失
当然,Redis 也可以做到数据永久保存(保存在磁盘上),但这是可选项。主要应用场景还是作为 缓存
1.3 Redis 优点
数据读取速度快 是 Redis 的优点,但我们还需要了解一下其它的优点:
1、支持多种数据类型
Redis 支持 Set、ZSet、List、Hash、String 这五种数据类型,操作非常方便。
这五种类型详细的使用方法在后面章节的实战项目中逐步学习,大家稍安勿躁。
要首先 特别强调 的是:Redis 是ANSI C语言编写的,并不是 Java 语言。在后面的学习过程中,不能把 Java 对象和 Redis 的数据类型画上等号。只能参照 Java 的概念辅助理解。例如 hash ,可以参照 Java 的 Map 理解其基本结构,但切勿等同。
2、持久化存储
把数据从内存保存在磁盘上从而保证计算机掉电不丢失,叫作持久化存储。
持久化是一个比较宽泛的概念,数据以任何形式(各种文件甚至存入MySQL)保存,只要做到不丢失都叫持久化
作为一个内存数据库,最担心的,就是万一机器死机宕机,数据就会消失掉。Redis 使用 RDB 和 AOF 做数据的持久化存储。主从数据同时生成rdb文件,并利用缓冲区添加新的数据更新操作做对应的同步。
- rdb:rdb在指定的时间间隔内将内存中的数据集快照写入磁盘
- aof:aof以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。
3、性能很好
由于是全内存操作,所以读写性能很好,可以达到 10w/s 的频率。
经过有些公司的观测,项目使用 Redis ,访问频率是 80w/s 是线上运行仍然一切ok
缺点
说了优点,大家在面试的时候,可能还会被问到缺点。
内存容量问题
由于 Redis 是内存数据库,短时间内大量增加数据,可能导致内存不够用。
Redis 本身有数据过期策略,但是还是需要提前预估和节约内存。如果内存增长过快,需要定期删除数据。
持久化存储的性能损耗问题
如果进行完整持久化,就需要生成rdb文件并传输保存,会占用主机的CPU,并消耗网络带宽。虽然 Redis2.8 版本以后,已经有只保存部分变化过的数据的功能,但是还是有可能有完整持久化的。比如,新上线的从库。
重启速度可能慢
将硬盘中的数据加载进内存,时间比较久。在这个过程中,Redis 不能提供服务
1.4 安装 Redis
1. 安装 Docker
Docker
是近年来非常流行的虚拟化技术,这节课就不细讲 Docker 本身了。
本节主要用 Docker 来安装 Redis ,自动化程度较高、非常简便。
单独安装 Redis 的过程比较复杂,还要涉及到各种配置,步骤很多。
使用命令行终端登录服务器后,依次输入命令(每一行是一条命令,一行输入完毕立即回车)执行:
sudo yum -y update
sudo yum -y install epel-release
sudo yum -y install docker-io
如果出现错误提示:“未找到匹配的参数: docker-io”或“错误:没有任何匹配: docker-io” ,则尝试输入命令:
sudo yum -y install docker
如果不使用 Docker ,安装 Redis 的步骤是非常繁琐的;而使用 Docker 技术,仅仅几个简单的步骤,就能快速安装 Redis,自动化程度较高、非常简便。
注意
- 优课达平台已经安装了 Docker,不用重复安装。
- 推荐 在自己购买的 云服务器 上安装 Docker;当然,云服务器如果已经安装过 Docker,就不用重复安装了。
2. 安装 Redis 并启动
sudo docker pull redis:latest
sudo docker images
sudo docker run --name redis -p 6379:6379 -d --restart=always redis:latest redis-server --appendonly yes --requirepass "Hello122342"
6379 是 Redis 服务的端口号。
Hello122342 是 Redis 服务器密码,非常重要,一定要改为自己密码。
在自己购买的 云服务器 上安装 Redis,别忘了在安全组管理中,开放端口号哦
验证是否启动成功
sudo docker ps
另一个是 MongoDB 很熟悉了吧