缓存中间件Redis进阶之路一(Redis的描述)

2020-07-28  本文已影响0人  情非得已丶丶

Redis(Remote Dictionary Server)是一个基于BSD开源的项目,同时也是一个基于内存的Key-Value结构化存储的存储系统。在实际生产环境中可以将其作为数据库、缓存和消息中间件来使用。

Redis是如今市面上应用很广泛的缓存中间件,它支持多种数据结构,包括字符串String、列表List、集合Set、有序集合Sorted Set和散列Hash等,在实际业务环境中可以实现类似于热点数据存储、非结构化数据存储和消息分发等功能。而在如今高并发、低延迟等架构流行的时代,Redis的出现可以说是带来了很大的贡献。

进阶之路涉及的内容主要有:

Redis简述:包括Redis的基本概念、典型应用场景介绍,以及在Windows开发环境下的简单使用。
Spring Boot整合Redis:使用StringRedisTemplate及RedisTemplate组件编写Hello World,初步感受Redis在实际微服务项目中的应用。
基于微服务项目举例Redis各种典型的数据结构。
以一个典型的实际业务场景为案例“实战”Redis,巩固Redis在实际互联网项目中的应用。
Redis概述与典型应用场景介绍
Redis是一款免费、开源、遵循BSD协议的高性能结构化存储数据库,可以满足目前企业大部分应用中对于高性能数据存储的需求。同时,它也是NoSQL(Not Only SQL),即非关系型数据库的一种,内置多种丰富多彩的数据结构,如字符串String、列表List、集合Set、散列Hash等,可以高效地解决企业应用频繁读取数据库而带来的诸多问题。

Redis的诞生其实还得追溯到Web 2.0网站的时代。互联网Web 2.0时代,可以说是“百花齐放”的时代,其中的典型之物当属各种基于内容、服务模式产品的诞生。这些产品的出现,在给人们的生活及思想带来一定冲击时,也给企业带来了巨大的用户流量。

众所周知,在早期的互联网Web 1.0时代,大部分企业还是采用传统的企业级单体应用架构,而一时间“蜂拥而来”的巨大用户流量显然使得此种架构再也难以支撑下去。此时各种典型的新型互联网架构应势而生,如面向SOA的系统架构、分库分表的应用架构、微服务/分布式系统架构,以及基于各种分布式中间件的应用架构等层出不穷。

在诸多系统架构实施及对巨大用户流量的分析过程中发现,其实用户的“读”请求远远多于用户的“写”请求,频繁的读请求在高并发的情况下会增加数据库的压力,导致数据库服务器的整体压力上升,这也是早期很多互联网产品在面对高并发时经常出现“响应慢”、“卡住”等用户体验差的原因。

为了解决这个问题,许多架构引入了缓存组件,Redis即为其中的一种。它可以很好地将用户频繁需要读取的数据存放至缓存中,减少数据库的I/O(输入/输出)操作,降低了服务器整体的压力。

由于Redis是基于内存的、采用Key-Value结构化存储的NoSQL数据库,加上其底层采用单线程和多路I/O复用模型,所以Redis的查询速度很快。根据Redis官方提供的数据,它可以实现每秒查询的次数达到10万次,即QPS为100000+,这在某种程度上足以满足大部分的高并发请求。

而随着微服务、分布式系统架构时代的到来,如今Redis在各大知名互联网产品中也得到了一席施展之地。比如大家都知晓的淘宝、天猫、京东、QQ、新浪微博、今日头条和抖音等App应用,其背后系统架构中分布式缓存的实现或多或少都可以见到Redis的踪影。概括来讲,Redis具有以下4种典型的应用场景。

1.热点数据的存储与展示

“热点数据”可以理解为大部分用户频繁访问的数据,这些数据对于所有的用户来说,访问将得到同一个结果,比如“微博热搜”(每个用户在同一时刻的热搜是一样的),如果采用传统的“查询数据库”的方法获取热点数据,将大大增加数据库的压力,而降低数据库的读写性能。

2.最近访问的数据

用户最近访问过的数据记录在数据库中将采用“日期字段”作为标记,频繁查询的实现是采用该日期字段与当前时间做“时间差”的比较查询,这种方式是相当耗时的。而采用Redis的List作为“最近访问的足迹”的数据结构,将大大降低数据库频繁的查询请求。

3.并发访问

对于高并发访问某些数据的情况,Redis可以将这些数据预先装载在缓存中,每次高并发过来的请求则可以直接从缓存中获取,减少高并发访问给数据库带来的压力。

4.排名

“排行榜”在很多互联网产品中也是比较常见的。采用Redis的有序集合(Sorted Set)可以很好地实现用户的排名,避免了传统的基于数据库级别的Order By及Group By查询所带来的性能问题。

除此之外,Redis还有诸多应用场景,比如消息队列、分布式锁等。在后面的篇章中,会选取几种典型的应用场景结合实际的微服务项目,以代码实例的方式来实现。

Redis的使用
接下来我们进入实际的微服务项目以代码的形式讲解Redis的使用。将首先介绍如何在本地开发环境下快速安装Redis,以及如何使用简单的命令行实现Redis的相关操作。在前面文章中,已经采用Spring Boot搭建了一个微服务项目,下节将整合Redis,介绍其在实际项目中的两个核心操作组件StringRedisTemplate及RedisTemplate的自定义注入配置。

转载请带链接:9im博客 » SpringBoot项目搭建流程
https://www.9im.cn/

上一篇下一篇

猜你喜欢

热点阅读