Redis学习专栏(基础知识):Redis简介

一. 背景

常用的SQL数据库的数据都是存在磁盘中的,虽然在数据库底层也做了对应的缓存来减少数据库的IO压力,但由于数据库的缓存一般是针对查询的内容,而且粒度也比较小,一般只有表中的数据没有发生变动的时候,数据库的缓存才会产生作用,但这并不能减少业务逻辑对数据库的增删改操作的IO压力,因此缓存技术应运而生,该技术实现了对热点数据的高速缓存,可以大大缓解后端数据库的压力。

二. 主流应用架构

在这里插入图片描述


客户端在对数据库发起请求时,先到缓存层查看是否有所需的数据,如果缓存层存有客户端所需的数据,则直接从缓存层返回,否则进行穿透查询,对数据库进行查询,如果在数据库中查询到该数据,则将该数据回写到缓存层,以便下次客户端再次查询能够直接从缓存层获取数据。

三. Redis特性

Redis的全称是Remote Dictionary Server,它主要提供了5种基本的数据结构:字符串、哈希、列表、集合、有序集合。它的特性如下:

1.速度快

正常情况下,Redis执行命令的速度非常快,官方给出的数据是10万+QPS(query per second),当然这也取决于机器的性能,但这里先不讨论机器性能上的差异,只分析一下是什么造就了Redis除此之快的速度:

(1).Redis完全基于内存,绝大部分请求是纯粹的内存操作,执行效率高;

(2).Redis使用单进程单线程模型的键值对数据库,将数据存储在内存中,存取均不会受到硬盘IO的限制,因此执行速度极快,另外单线程也能处理高并发请求,还可以避免频繁上下文切换和锁竞争;

(3).数据结构简单,对数据操作也简单,Redis不使用表,不会强制用户对各个关系进行关联,不会有复杂的关系限制,其存储结构就是键值对,类似于HashMap,HashMap最大的优点就是存取的时间复杂度为O(1);

(4).Redis使用多路I/O复用模型,为非阻塞IO(注:Redis采用的I/O多路复用函数为epoll/kqueue/evport/select);

2.支持数据磁盘持久化存储

通常看,将数据放在内存中是不安全的,一旦发生断电或者机器故障,重要的数据可能就会丢失,因此Redis提供了两种持久化方式:RDB和AOF,即可以用两种策略将内存的数据保存到硬盘中,这样就保证了数据的可持久性。

在这里插入图片描述

3.支持多种数据结构,功能丰富

除了5种基本数据结构,Redis还提供了许多额外的功能:

  • 提供了键过期功能,可以用来实现缓存。 提供了发布订阅功能,可以用来实现消息系统。
  • 支持Lua脚本功能,可以利用Lua创造出新的Redis命令。
  • 提供了简单的事务功能,能在一定程度上保证事务特性。
  • 提供了流水线(Pipeline)功能,这样客户端能将一批命令一次性传到Redis,减少了网络的开销。

4.简单稳定

Redis的简单主要表现在三个方面:

  • Redis的源码很少;
  • Redis使用单线程模型,这样不仅使得Redis服务端处理模型变得简单,而且也使得客户端开发变得简单。
  • Redis不需要依赖于操作系统中的类库(例如Memcache需要依赖libevent这样的系统类库),Redis自己实现了事件处理的相关功能。

Redis虽然很简单,但是不代表它不稳定。以维护的上千个Redis为例,没有出现过因为Redis自身bug而宕掉的情况。

5.支持多种编程语言

Redis提供了简单的TCP通信协议,很多编程语言可以很方便地接入到Redis,并且由于Redis受到社区和各大公司的广泛认可,所以支持Redis的客户端语言也非常多,几乎涵盖了主流的编程语言,例如Java、PHP、Python、C、C++、Nodejs等。

6.支持主从复制

Redis提供了复制功能,实现了多个相同数据的Redis副本(如图所示),复制功能是分布式Redis的基础。

在这里插入图片描述

7.高可用和分布式

Redis从2.8版本正式提供了高可用实现哨兵模式(Redis Sentinel),它能够保证Redis节点的故障发现和故障自动转移。

Redis从3.0版本正式提供了分布式实现Redis Cluster(集群),它是Redis真正的分布式实现,提供了高可用、读写和容量的扩展性。

参考文章:
Redis的八大特性
redis的八大特性

相关文章

文章浏览阅读1.3k次。在 Redis 中,键(Keys)是非常重要的概...
文章浏览阅读3.3k次,点赞44次,收藏88次。本篇是对单节点的...
文章浏览阅读8.4k次,点赞8次,收藏18次。Spring Boot 整合R...
文章浏览阅读978次,点赞25次,收藏21次。在Centos上安装Red...
文章浏览阅读1.2k次,点赞21次,收藏22次。Docker-Compose部...
文章浏览阅读2.2k次,点赞59次,收藏38次。合理的JedisPool资...