赞
踩
Redis 是现在最受欢迎的 NoSQL 数据库 之一,Redis 是一个包含多种数据结构、支持网络、基于内存、可选持久性的 键值对 (Key - Value)存储数据库
从广义来讲,Redis 可以称为数据库。
Redis 也符合“按照数据结构来组织、存储和管理数据的仓库”的定义,可以说是一种数据库
NoSQL 是各种资料中常见的词,它是"Not Only SQL"的缩写,泛指非关系型数据库。
我们常用的 MySQL、SqlServer 都是关系型数据库,这些数据库一般用来存储重要信息,应对普通的业务是没有问题的。但随着互联网的高速发展,传统的关系型数据库在应付超大规模,超大流量以及高并发的时候力不从心,这就需要使用到像 Redis 这样的 NoSQL 数据库。
下面是 Redis 的 Logo:
这个 Logo 很像一个积木盒子,里面放了各种各样形状的玩具。这也预示着 Redis 的作用:存储任意内容。
Redis 被称为数据库,但不一定跟 MySQL 冲突,系统不是只能使用二者之一。
Redis 的 常见 的、 核心 的使用场景是:作为数据缓存(cache)。因为其 数据读取速度快,能够大大的 提高运行效率,所以 Redis 在大多数情况下被称作“缓存”。
Redis 的“缓存”叫法更明确,“数据库”叫法比较专业
缓存,顾名思义,就是把数据存放在缓冲区,当查找数据时,首先会在缓存中进行查找,如果存在,就获取;否则就访问数据库。频繁的从缓存中读取数据,减少访问数据库的次数,可以提高运行效率。
读写缓存内容值 Value,都是通过 Key 来完成的。用 Key 进行查询的方式非常简单,不像关系型数据库可以写各种查询语句用各种调解进行查询。
下面的章节会详细讲。当前可以参考 Java Map 理解 Key - Value 结构。
所以,Redis 缓存与 MySQL 等数据库并不冲突,而是有益的补充。
有时候你会看到某些资料称 Redis 为“缓存数据库”,也不要觉得奇怪
Redis 速度快的第一个直观原因是,数据存储在计算机的内存中,基于内存当然读写速度快,但内存空间有限,所以数据不宜永久保存。
计算机重启后数据消失
当然,Redis 也可以做到数据永久保存(保存在磁盘上),但这是可选项。主要应用场景还是作为 缓存
数据读取速度快 是 Redis 的优点,但我们还需要了解一下其它的优点:
Redis 支持 Set、ZSet、List、Hash、String 这五种数据类型,操作非常方便。
这五种类型详细的使用方法在后面章节的实战项目中逐步学习,大家稍安勿躁。
要首先 特别强调 的是:Redis 是ANSI C语言编写的,并不是 Java 语言。在后面的学习过程中,不能把 Java 对象和 Redis 的数据类型画上等号。只能参照 Java 的概念辅助理解。例如 hash ,可以参照 Java 的 Map 理解其基本结构,但切勿等同。
把数据从内存保存在磁盘上从而保证计算机掉电不丢失,叫作持久化存储。
持久化是一个比较宽泛的概念,数据以任何形式(各种文件甚至存入MySQL)保存,只要做到不丢失都叫持久化
作为一个内存数据库,最担心的,就是万一机器死机宕机,数据就会消失掉。Redis 使用 RDB 和 AOF 做数据的持久化存储。主从数据同时生成rdb文件,并利用缓冲区添加新的数据更新操作做对应的同步。
由于是全内存操作,所以读写性能很好,可以达到 10w/s 的频率。
经过有些公司的观测,项目使用 Redis ,访问频率是 80w/s 是线上运行仍然一切ok
说了优点,大家在面试的时候,可能还会被问到缺点。
由于 Redis 是内存数据库,短时间内大量增加数据,可能导致内存不够用。
Redis 本身有数据过期策略,但是还是需要提前预估和节约内存。如果内存增长过快,需要定期删除数据。
如果进行完整持久化,就需要生成rdb文件并传输保存,会占用主机的CPU,并消耗网络带宽。虽然 Redis2.8 版本以后,已经有只保存部分变化过的数据的功能,但是还是有可能有完整持久化的。比如,新上线的从库。
将硬盘中的数据加载进内存,时间比较久。在这个过程中,Redis 不能提供服务
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,自动化程度较高、非常简便。
- 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 很熟悉了吧
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。