Redis单机最大并发量

2023-11-09


Redis的速度非常的快,单机的Redis就可以⽀撑 每秒十几万的并发,相对于MySQL来说,性能是MySQL的几十倍。

布隆过滤器

可用于解决常规方法判断某个元素是否存在在上亿的数据量中的数据检索时间复杂度、整体的效率和占用特别多的内存空间。

在这里插入图片描述
位图可以有效解决该问题,其基本原理是使用一个比特位来存储当前数据是否存在的一个状态值。也就是把一个数据通过hash运算取模后,落在bit数组里面的一个位置。通过1对该位置进行标记,这种方式适合用于大规模的数据,但是数据状态又不是很多的情况。通常用于判断某个数据是否存在。

布隆过滤器就是在位图的基础上做了一些优化的设计。
在这里插入图片描述
其原理是当一个元素被加入到集合的时候,通过k个散列函数,把这个函数映射到一个位数组中的K个点,把这些位置设为1。

我们在进行数据检索和比较的时候可以使用同样的方式去映射,只要看到每个映射的位置的值是否为1,就可以大概知道该元素是否存在于集合里面。

如果这些点里面,有任何一个位置的值是0,那么意味着被检查的元素一定不存在这个集合里面。如果都是1,那么则被检查元素很可能存在。这就是布隆过滤器的一个基本原理。

多级缓存

在这里插入图片描述
多级缓存架构,从上至下,分为客户端、应用层、服务层、数据层

客户端缓存

商城中主要是对html中图片、css、字体等静态来进行缓存。

在过期前,会将图片已文件形式保存到本地,再次访问时会看见from disk cache的提示。

应用层缓存

在这里插入图片描述
CDN内容分发网络,其中的核心技术是:
在这里插入图片描述

Expires和Cache-Control的区别

Expires是指定具体某个时间点缓存到期。
Cache-Control则代表缓存的有效期是多长时间。
Expires设置时间,Cache-Control设置时长。

Nginx缓存管理

Nginx是一款开源的、跨平台高性能服务器。
在这里插入图片描述
Nginx作为Web应用中的常客,例如后端的Tomcat集群便可以通过Ngix做前置的软负载均衡,为应用提供高可用性。
在这里插入图片描述
在本地以目录的形式缓存,当前缓存的图片文件、css、js都在Nginx的缓存目录下进行分文件分目录的保存。

服务层缓存

进程内缓存

在这里插入图片描述
在一个应用中开辟一个内存空间,数据是在运行时被载入到这块内存中。通过本地内存的低延迟和高吞吐的特性来提高程序的访问速度。

进程内缓存在众多的java框架中也有着典型的应用,比如Hibernate,mybatis的一二级缓存,SpringMVC的页面缓存都是进程内缓存的典型代表。

这些进程内缓存在java中也有着很多开源的实现。

进程外缓存

也就是分布式缓存,典型代表就是redis。
在这里插入图片描述
通过独立地部署分布式的缓存服务,最常用的就是基于redis的这种内存型NoSQL数据库。

对整体架构中的应用数据来进行集中缓存。

缓存数据一致性问题的解决

数据库写操作是不会走缓存的,如何保证缓存同步更新。最常用的就是在当前的架构中引入mq消息队列。利用其主动推送的功能向其他的服务实例推送这些变更的数据。
在这里插入图片描述
在这里插入图片描述

引入多级缓存设计的时刻

  1. 缓存的数据是稳定的,邮政编码、地域区块等等。
  2. 瞬间会产生极高并发的场景,12306、股市交易等等。
  3. 一定程度上允许数据不一致。

参考资料:

  1. 蚂蚁一面 | 布隆过滤器到底是什么?我该怎么回答呀!【Java面试】
  2. 【IT老齐004】为什么架构师对多级缓存架构情有独钟?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis单机最大并发量 的相关文章

  • 如何设置 Celery 以通过 ssl 与 Azure Redis 实例对话

    使用 的伟大答案 如何在microsoft azure上的django项目中配置celery redis https stackoverflow com questions 39616701 how to configure celery
  • WSL Redis 遇到系统尚未使用 systemd 作为 init 系统(PID 1)启动。无法操作[已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试遵循本文中讨论的 Redis 安装过程article https www digitalocean com community
  • 如果另一个键中的计数器低于零,则从集合中原子删除一个项目?

    雷迪斯2 0 3 在我的 Redis DB 中 我有一组项目 每个项目都有一个与其关联的计数器 MULTI SADD items set foo INCRBY items foo 10000 EXEC 新项目会以随机间隔添加到集合中 当用户
  • redis-cli 重定向到 127.0.0.1

    我在PC1上启动Redis集群 然后在PC2上连接它 当需要重定向到另一个集群节点时 它会显示Redirected to slot 7785 located at 127 0 0 1 但应该显示Redirected to slot 7785
  • Redis 排序集和解决关系

    我正在使用 Redis 排序集来存储我正在处理的项目的排名 我们没有预料到 我们想要如何处理关系 Redis 按字典顺序对具有相同分数的条目进行排序 但我们想要做的是对具有相同分数的所有条目给予相同的排名 例如在以下情况 redis 127
  • 如何将 ActionController::Live 与 Resque + Redis 一起使用(用于聊天应用程序)

    我正在尝试为我的 Rails 应用程序构建聊天功能 我在用ActionController Live Puma Resque Redis为了这 所以基本上在这种情况下 redissubscribe方法正在后台运行 使用resque 到目前为
  • 在 sidekiq 上配置 redis 身份验证

    我想我错过了一些东西 因为我在文档中找不到如何编写 redis 实例的用户名和密码以与 sidekiq 一起使用 有没有办法做到这一点 或者是通过 ENV 变量 Sidekiq 将无法识别的 Redis 选项直接传递给 Redis 驱动程序
  • 如何将node.js管道传输到redis?

    我有很多数据要插入 SET INCR 到redis DB 所以我正在寻找pipeline http redis io topics pipelining 质量插入 http redis io topics mass insert通过node
  • 使用Redis从有限范围内生成唯一ID

    我有一些数据库项目 除了主键之外 还需要项目所属组的唯一索引 我们来调用属性nbr 以及将项目分组在一起并定义唯一范围的属性nbr 我们会打电话group This nbr必须在 1 N 范围内 并且may从外部源导入项目时进行设置 由于所
  • 如何设置和获取Redis中存储的对象?

    我试图在 redis 中存储一个对象 当我获取该对象时 它似乎不起作用 I tried u User new u name blankman redis set test u x redis get test x name error 我想
  • Lua中按字符分割字符串

    我有像这样的字符串 ABC DEF 我需要将它们分开 字符并将两个部分分别分配给一个变量 在 Ruby 中 我会这样做 a b ABC DEF split 显然Lua没有这么简单的方法 经过一番挖掘后 我找不到一种简短的方法来实现我所追求的
  • 使用 Sentinels 升级 Redis 的最佳实践?

    我有 3 个 Redis 节点 由 3 个哨兵监视 我进行了搜索 文档似乎不清楚如何最好地升级此类配置 我目前使用的是 3 0 6 版本 我想升级到最新的 5 0 5 我对这方面的程序有几个疑问 升级两个大版本可以吗 我在我们的暂存环境中执
  • Spring Data JPA Redis:无法编写基于自定义方法的查询

    我已经使用 Redis 配置了 Spring Data JPA 并使用RedisRepositorieswith 提供了类似的方法find findAll 所有这些方法似乎都工作得很好 但我无法编写我的自定义方法 RedisEntity f
  • Laravel 所有会话 ID 与 Redis 驱动程序

    在我的应用程序中 我希望允许某些用户能够注销除他 她之外的所有其他用户 当会话驱动程序设置为文件时 我已经完成了此功能 但现在我使用 redis 作为会话驱动程序 并且我无法找到任何方法来列出所有当前会话 就像我在文件时所做的那样司机 问题
  • 如何使 Redis 缓存中数据层次结构(树)的部分内容无效

    我有一些产品数据 需要在 Redis 缓存中存储多个版本 数据由 JSON 序列化对象组成 获取普通 基本 数据的过程很昂贵 将其定制为不同版本的过程也很昂贵 因此我想缓存所有版本以尽可能进行优化 数据结构看起来像这样 BaseProduc
  • StackExchange.Redis Get 函数抛出 TimeoutException

    我在用着StackExchange Redis与 C 和StackExchangeRedisCacheClient Get函数抛出以下异常 myCacheClient Database StringGet txtKey Text myCac
  • 如何延长 django-redis 中的缓存 ttl(生存时间)?

    我正在使用 django 1 5 4 和 django redis 3 7 1 我想延长缓存的 ttl 生存时间 当我取回它时 这是示例代码 from django core cache import cache foo cache get
  • 如何使用redis发布/订阅

    目前我正在使用node js和redis来构建应用程序 我使用redis的原因是因为发布 订阅功能 该应用程序只是在用户进入用户或离开房间时通知经理 function publishMsg channel mssage redisClien
  • Redis 中存储整数和字符串的区别

    这两个命令有什么区别吗 LPUSH myset 123 LPUSH myset 123 我想存储大约 500 万个整数 并且我想以最有效的方式做到这一点 不 没有什么区别 两者都存储为字符串 从redis io http redis io
  • Web API 缓存 - 如何使用分布式缓存实现失效

    我有一个 API 目前不使用任何缓存 我确实有一个正在使用的中间件 它可以生成缓存标头 Cache Control Expires ETag Last Modified 使用https github com KevinDockx HttpC

随机推荐

  • 有些写法是正确的,但是为什么报错,mybaits

    这是低版本3 1 1根本不支持map迭代key和value 高版本则支持 多了一个map
  • OpenCV学习记录之视频中的火焰检测识别

    主要完成两个视频中火焰的检测 主要结合RGB判据和HIS判据 设定合适的阈值条件 检测出火焰对应像素的区域 将原图二值化 经过中值滤波以及数学形态学的膨胀运算等图像处理 消除一些噪声及离散点 连通一些遗漏的区域 基于OpenCV的开源库 在
  • 区块链将引入一种全新的语言 开启加密经济新时代

    本质上 区块链是一种永久保存交易记录的科技 而且交易记录无法被删除 只能序贯更新 从而创建了一条永无止境的历史踪迹 这个看上去简单的功能性描述 却有着意义深远的含义 它引导我们对创建交易 存储数据和移动资产的传统方式进行重新思考 而这一切仅
  • YOLOv5 训练报错记录(持续更新中...)

    1 AttributeError Can t get attribute C3 AttributeError Can t get attribute C3 on
  • STM32 HAL库实战(一)使用STM32驱动双通道12位DAC(TLV5618)

    TLV5618参考资料 TLV5618是德州仪器公司研发的一种双通道12 bit数模转换器 具有较宽的电压输出范围和2倍增益 本文参考资料 TLV5618 DataSheet 硬件资源概述 STM32F407ZGTx 192KB RAM 1
  • 华为手机为什么打不开微信连接到服务器,华为手机微信打不开如何解决? 华为手机微信打不开解决方法介绍!...

    您可能感兴趣的话题 华为 手机 微信 打不开 核心提示 华为手机微信打不开如何解决 华为手机微信打不开解决方法是什么 下面小编给大家介绍一下 希望你能喜欢 华为手机微信打不开如何解决 华为手机微信打不开解决方法是什么 下面小编给大家介绍一下
  • 【React常见面试题】

    前端面试题 对react的理解 有哪些特性 Real diff算法是怎么运作的 React生命周期有哪些不同的阶段 每个阶段对应的方法 对React中虚拟dom的理解 对react hook的理解 React组件之间如何通信 Connect
  • 直方图均衡化(调节图像亮度、对比度)

    直方图均衡化 调节图像亮度 对比度 本篇目录 一 前言 二 直方图均衡化概念 三 直方图均衡化实例 1 灰度图像的均衡处理实例 卡通人物灰度图像均衡处理 卡通猫头鹰灰度图像均衡处理 弹琴猫灰度图像均衡处理 2 彩色图像的均衡处理实例 四 总
  • C#中的函数式编程:递归与纯函数(二) 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面...

    C 中的函数式编程 递归与纯函数 二 在序言中 我们提到函数式编程的两大特征 无副作用 函数是第一公民 现在 我们先来深入第一个特征 无副作用 无副作用是通过引用透明 Referential transparency 来定义的 如果一个表达
  • 专家PID的控制算法-MATLAB实现

    专家PID的控制算法 MATLAB实现 PID控制 实际应用中多是PI控制和PD控制 就是根据系统的误差 利用比例 积分和微分计算出控制量进行控制的 PID专家控制的实质 是基于受控对象和控制规律的各种知识 利用专家经验设计一些规则并结合的
  • Python爬虫实战案例——第五例

    文章中所有内容仅供学习交流使用 不用于其他任何目的 严禁将文中内容用于任何商业与非法用途 由此产生的一切后果与作者无关 若有侵权 请联系删除 目标 采集三国杀官网的精美壁纸 地址 aHR0cHM6Ly93d3cuc2FuZ3Vvc2hhLm
  • 【ClickHouse内核】资源管理

    目录 概述 资源使用追踪机制 MemoryTracker ProfileEvents QueryProfiler 举个例子 资源隔离机制 内存隔离 CPU隔离 IO隔离 资源使用配额 Quota 机制 结论 概述 资源管理对于数据库来说是非
  • Parameter 0 of constructor in XXX required a single bean, but 3 were found:

    原因 因为在构造函数中 需要一个单一的 OrderStatus Bean 但Spring在容器中找到了三个这样的Bean 解决方式 在随机一个组件中加入一个注解 Primary Component Primary Slf4j public
  • 18650锂电池参数、充放电时间计算详解

    我们以NCR18650B举例 其参数为 额定容量 3200mAh 容量范围3250mAh 3350mAh 额定电压 3 6V 充电参数 恒流 恒压 充电电流为1625mA 充电到4 2V 需要4小时 质量 48 5g 充电温度 放电温度 存
  • 傅里叶变换公式及其推导【超详细!】

    题主本硕机械专业 自学转互联网 算法岗成功 获得阿里 字节 美团 华为等 15 offer 后续会在公众号 苏学算法 分享各类学习笔记 面试经验 感兴趣的可以关注一波 一 核心公式 时域 gt gt gt 频域 X
  • idea 类注释模板

    类注释模板如下 if PACKAGE NAME PACKAGE NAME package PACKAGE NAME end parse File Header java ClassName NAME Author name Date DAT
  • K8S 部署 SpringBoot 项目(一篇够用)

    现在比较多的互联网公司都在尝试将微服务迁到云上 这样的能够通过一些成熟的云容器管理平台更为方便地管理微服务集群 从而提高微服务的稳定性 同时也能较好地提升团队开发效率 但是迁云存在一定的技术难点 今天这篇文章主要介绍如何从0开始搭建一套基于
  • c语言程序设计

    一 c语言主要特点 1 语法设计不 太严格 软件程序自由度大 2 对变量的类型使用比较灵活 如整型和字符型数据可以通用 3 c语言具有高级语言的功能和低级语言的很多功能 可以用来编写系统软件 4 编译系统简洁 易移植等特点 例如 inclu
  • 360云盘会不会停止服务器,360云盘能否继续使用啊?

    2017 10 10 03 56 14 除非你已购买了企业云盘只要交了费就可以使用了 可用原云盘帐号登录 把原云盘内的数据一键导入企业云盘 全部 2017 10 10 03 56 14 2017 10 10 03 56 14 完善个人资料
  • Redis单机最大并发量

    redis单机最大并发量 布隆过滤器 多级缓存 客户端缓存 应用层缓存 Expires和Cache Control的区别 Nginx缓存管理 服务层缓存 进程内缓存 进程外缓存 缓存数据一致性问题的解决 引入多级缓存设计的时刻 Redis的