如何使用Redis解决大并发和百万数据量

您所在的位置:网站首页 redis支持多少key 如何使用Redis解决大并发和百万数据量

如何使用Redis解决大并发和百万数据量

2023-09-26 21:01| 来源: 网络整理| 查看: 265

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

最近老七开发的一个项目比较频繁的用到了redis,于是抽时间写一个关于redis的系列文章,希望能够帮助到刚入门或者遇到项目出现性能及并发问题的朋友们。 老七是一个不擅长用专业数据表述问题的人,如果文章中出现一些错误啥的,看到文章的朋友们可以给老七提出指正和宝贵的意见。最近老七做的短视频项目由于关注数据激增,单表数据达到了几百万,用户在使用过程中出现了卡顿问题,为了解决这个问题专门购置了一台redis数据库。

在大并发的情况下,所有请求如果都是直接访问数据库,那么数据库会出现连接异常。这个时候,选择使用Redis做一个缓冲操作,让请求先访问到Redis,而不是直接访问数据库。 本篇文章先简单介绍一下redis,后续的文章会详细的介绍如果不花钱购买redis数据库,在服务器安装redis及使用。 当然也会详细介绍购买redis数据库配置及使用,喜欢的朋友多多关注老七!你们的鼓励是老七创作的动力!

一.Redis简介 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。 二.Redis 优势 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。 三.Redis与其他key-value存储有什么不同? Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

四.使用Redis最常遇到的4个问题 1、缓存和数据库双写一致性问题

2、缓存雪崩问题

3、缓存击穿问题

4、缓存的并发竞争问题

从安全角度来说,缓存也是最容易被攻击的薄弱点(缓存溢出攻击,不是缓存区溢出攻击,用大量无效的数据占满缓存空间使得系统性能断崖式下跌)。所以通常做压力测试的时候都是要求必须关闭缓存测试。不单单是缓存,所有的中间件在解决一部分问题的同时也会带来新的挑战。 譬如消息队列对于削峰填谷的功效非常明显,但是如果峰值持续的时间远远的超出了估计呢?而如果这时候消息阻塞的监控还在计划中的话…… 比如说分布式计算带来了无限扩容的可能,而一致性问题很多时候会带来非常多的麻烦。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3