13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

来个查漏补缺!关于Redis都在这一篇里了

Redis简介

Redis 是 C 语言开发的一个开源高性能键值对的内存数据库,可以用来做数据库、缓存、消息中间件等场景,是一种 NoSQL(not-only sql,非关系型数据库)的数据库。

创新互联建站是一家集网站建设,黄埔企业网站建设,黄埔品牌网站建设,网站定制,黄埔网站建设报价,网络营销,网络优化,黄埔网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

Redis特点

优秀的性能,数据是存储在内存中,读写速度非常快,可支持并发10W QPS。

可以作为消息中间件使用,支持消息发布及订阅。

数据类型

下表是我列举的五种数据类型的特性及其使用场景

缓存

数据缓存是 Redis 最重要的一个场景,为缓存而生,在springboot中,一般有两种使用方式:

使用缓存遇到的问题

(1)数据一致性

在分布式环境下,缓存和数据库很容易出现数据一致性问题,如果项目对缓存的要求是强一致性,那就不要使用缓存。

我们只能在项目中使用策略降低缓存与数据库一致性的概率,是无法保障两者的强一致性,一般策略包括缓存更新机制,更新数据库后及时更新缓存、缓存失败时增加重试机制。

(2)缓存雪崩

在了解雪崩溃之前,我们先了解什么是缓存雪崩现象,假设A系统每秒需要处理5000个请求,但数据库每秒只能处理 4000 个请求,某一天,缓存机器出现了宕机,挂了,这时候所有的请求一下子全部落在数据库上,数据库肯定扛不住,报警挂掉了,这时候如果没有采取缓存设施,数据库又急着用,重新重启数据库,刚重启完成(有可能没启动完),请求又进来了,数据库立马挂掉。

这就是雪崩事件,是 Redis 缓存中最致命问题之一(有一个是穿透)。大家可以看看下图:

出现雪崩事件后不要急不要慌,我们可以在事故前中后三个方面来思考解决方案:

我们来看看改造后的数据流程,假设用户A发送一个请求,系统先请求本地 Ehcache 是否有数据,如果没有再去 Redis 请求数据,如果没有再去数据库请求数据,获取到数据后同步到 Ehcache 和 redis。

限流组件的作用:可以设置每秒请求数次,有多少通过请求,剩余的未通过的可以走降级处理,返回一些默认的值,或者友情提示等默认操作。具体流程可以看看下图:

这样做的好处是:

(3)缓存穿透

缓存穿透是指缓存和数据库中都没有的数据,用户(黑客)不断发起请求,导致请求直接查询数据库,这种恶意行为攻击场景的会直接导致数据库挂掉,数据流程如下图所示:

处理这种情况相对比较简单点,这种情况是绕过redis或本地缓存直接到达数据库,可以采取以下方案:

(4) 缓存击穿

上面讲的穿透是针对大面积数据请求,那么击穿是针对一点(一个key)来来导致redis异常,但某个key是非常热点,请求非常频繁,处于集中式访问现象,当这个key失效(过期)时,大量的请求就会击穿了缓存,直接请求数据库,就像在屏障中凿开了一个洞。

不同场景下缓存击穿解决方案

为什么Redis这么快

Redis 官方介绍可以达到10W+的QPS,这个数据不比 MEMCache 差,而且 Redis 是单进程单线程的模型,完全基于内存的操作,CPU 不是 Redis 的瓶颈,Redis 的瓶颈是内存及网络带宽,有以下特点:

Redis 淘汰策略

Redis持久化

Redis 持久化策略有两种:

如果非常关心你的数据,但仍然可以承受数分钟内的数据丢失,那么可以额只使用 RDB 持久。

AOF 将 Redis 执行的每一条命令追加到磁盘中,处理巨大的写入会降低Redis的性能,不知道你是否可以接受。

数据库备份和灾难恢复:定时生成 RDB 快照非常便于进行数据库备份,并且 RDB 恢复数据集的速度也要比 AOF 恢复的速度快。

当然了,Redis 支持同时开启 RDB 和 AOF,系统重启后,Redis 会优先使用 AOF 来恢复数据,这样丢失的数据会最少。

Redis主从复制

Redis哨兵模式

我们先说说主从复制会存在问题:

哨兵的架构模式如下:

该系统可以执行以下四个任务:


网页标题:来个查漏补缺!关于Redis都在这一篇里了
路径分享:http://cdbrznjsb.com/article/coihihg.html

其他资讯

让你的专属顾问为你服务