首页 > 编程笔记 > MySQL笔记 阅读:8

Redis是什么,Redis数据库简介(新手必看)

目前企业中最流行的数据库模型主要有两种,分别是关系型数据库和非关系型数据库。典型的关系型数据库有 MySQL 和 MariaDB,而本节介绍的 Redis 就是一款常用的非关系型数据库。

有读者可能会问,既然都学了关系型数据库了,还有学习非关系型数据库的必要吗?一般来说,存储数据使用关系型数据库就够了,但是对于高并发、高性能的环境,关系型数据库的处理还有所欠缺,有需求空缺就会有市场产品来填补,非关系型数据库就是这样应运而生的。

非关系型数据库也被称为 NoSQL 数据库,NoSQL 的含义最初表示为“Non-SQL”,后来有人转解为“Not only SQL”。

2009年,在亚特兰大举行过一场“no:sql(east)”的讨论会,在这场讨论会上提出的口号叫“select fun,profit from real_world where relational=false”。因此,对 NoSQL 最普遍的解释是“非关联型的”,强调的是键值存储和面向文档数据库的优点,是传统关系型数据库的一个有效补充,而不是反对关系型数据库。

非关系型数据库经过多年的发展已经出现了很多种类,常见的有以下几种:
远程字典服务(Remote Dictionary Server,Redis)是意大利人 Salvatore Sanfilippo 使用 C语言编写开发的,为保证效率,它将数据以键值对的形式缓存在内存中,所以又称为缓存数据库。

Redis 之所以应用这么广泛,除了免费开源,还因为它具备以下特性:
为了存储不同类型的数据(Value),Redis 提供了以下 5 种基本数据结构
Redis 的应用场景有很多,但应用最广泛的是在数据缓存(提高访问速度)系统方面。


图 1 Redis在数据缓存系统中的应用

由上图可见,数据缓存系统会将一些在短时间内不发生变化,且会被频繁访问的数据(或者需要耗费大量资源生成的内容)放到 Redis 缓存数据库中,这样就可以让应用程序能够快速高效地读取它们。

在图 1 中,假如没有 Redis 缓存数据库,商城系统会直接去 MySQL 数据库中查询数据,并将结果返回用户。增加 Redis 缓存数据库后,查询数据的流程就变了,商城系统会先去 Redis 缓存数据库中查找数据,若没有,再去 MySQL 数据库中查询,查询到结果后会在 Redis 中存一份,下一次就可以直接从 Redis 中获取了。

因为 Redis 是直接将数据存储在内存中,而 MySQL 是将数据存储在硬盘中,相对而言,操作内存中的数据要比操作硬盘中的数据快。究竟有多快呢,举例说明:
通过数据的对比,大家应该能想象到内存的读写速度有多快,这也是 Redis 缓存数据库被广泛应用于各大企业运维架构的原因,只要将那些被频繁访问的数据存储到 Redis 缓存数据库中,就能大幅提高用户访问速度,降低网站的负载和 MySQL/MariaDB 数据库的读取频率。

Redis 将数据全部存储在内存中,这样虽然大大提高了处理数据的速度,但也会带来安全性问题,一旦 Redis服务器发生意外情况,例如突然宕机或断电等,内存中的数据将会全部丢失。因此必须有一种方案能够保证 Redis 储存的数据不会因为突发状况导致丢失,这就是 Redis 的数据持久化存储机制,数据的持久化存储是 Redis 的重要特性之一。

Redis 的持久化存储功能可以将内存中的数据以文件形式保存在硬盘中,用来避免发生突发状况导致数据丢失。当 Redis 服务重启时,就可以利用之前持久化存储的文件恢复数据。

相关文章