【Redis】关于它为什么快?使用场景?以及使用方式?为何引入多线程?

news2025/1/16 15:47:01

目录

1.既然redis那么快,为什么不用它做主数据库,只用它做缓存?

2.Redis 一般在什么场合下使用?

 3.redis为什么这么快?

4.Redis为什么要引入了多线程?


1.既然redis那么快,为什么不用它做主数据库,只用它做缓存?

redis设计者的初衷,就只是为了存储小量级的共享数据

所以,他敢直接单线程直接干上去,因为数据量小,所以够快。

因此,一旦碰到大key的情况, redis的风险就来了。

我曾经遇到过,用redis做队列,产生了大key,然后导致主服务器阻塞。

接下里引发了集群的客观下线,数据全面紊乱。

试想一下,如果用redis存储个千万级别的数据,那select一下,是不是其他线程都别玩了。

ok,你可以说,那咱们搞个多线程版的redis不就解了。

但别忘了,关系型数据库,牛逼之处就是对事务的管控,比如mysql的mvcc。

那redis有这些东西吗?它没有啊。

那强行上车,到时候各种脏读,不可重复读,幻读全来了。

何必呢,有mysql这种现成的产品,何必为了追求那一点效率,去回炉重造呢?

2.Redis 一般在什么场合下使用?

Redis 是一种开源的、支持网络、基于内存、可持久化的键值数据库。常用于在高并发、高性能场景下进行缓存、消息队列、计数器、排序等操作。

  1. 缓存:Redis 的读写性能非常高,适合做缓存。
  2. 消息队列:Redis 支持发布订阅模式,可以作为消息队列使用。
  3. 计数器:Redis 支持原子计数器操作,可以用来统计网站的访问量等。
  4. 排序:Redis 支持对数据进行排序,可以用来做排行榜等应用。



 3.redis为什么这么快

Redis 之所以被认为是快速的原因有以下几点:

内存存储:Redis 将数据存储在内存中,这使得它能够提供快速的读写操作。与传统的磁盘存储相比,内存存储的访问速度更快,因为它无需进行磁盘 I/O 操作。

单线程模型:Redis 使用单线程模型来处理所有的客户端请求。这样可以避免多线程之间的上下文切换开销和锁竞争,使得请求的处理更加高效。此外,单线程模型还简化了 Redis 的实现和维护。

非阻塞 I/O:Redis 使用非阻塞的网络 I/O 模型,通过使用事件驱动的方式处理客户端请求。它利用操作系统提供的 epoll、kqueue 等机制,在单线程中同时处理多个客户端连接,避免了传统阻塞 I/O 的等待时间,提高了并发性能。

简单数据结构:Redis 提供了一些简单而高效的数据结构,如字符串、哈希表、列表、集合和有序集合等。这些数据结构的实现经过了优化,能够在常数时间内执行大多数操作,如插入、删除和查找等。

持久化选项:Redis 提供了多种持久化选项,包括快照(snapshot)和日志(append-only file)。通过将数据保存到磁盘上的文件,可以在重启后快速恢复数据,保证数据的持久性。

高效的操作:Redis 提供了丰富的命令和功能,可以通过一条命令完成复杂的操作。例如,它支持原子操作、批量操作、管道操作和事务等,这些操作可以减少网络往返次数,提高了性能。

4.Redis为什么要引入了多线程?

1、线程是什么?

线程是操作系统能够进行运算调度的最小单位,换句话说线程就是cpu调度的最小单位。在多线程编程中,线程是程序执行的流程,每个线程都有自己的执行路径和上下文,并且可以独立执行和同步与其他线程。

2、使用线程带来的好处?

  • 并发处理:线程可以让程序同时执行多个任务,实现并发处理。多线程可以充分利用多核处理器的优势,提高系统的处理能力。
  • 资源共享:线程可以共享进程的资源,如内存、文件等。这样可以减少资源的重复创建和占用,提高系统的效率和性能。
  • 提高响应性:通过多线程,可以将耗时的操作和阻塞任务放在后台线程中处理,保持主线程的响应性,提高用户体验。

3、Redis引入线程后的好处?

  • 并发处理能力:Redis是一个高性能的缓存和数据存储系统,引入多线程可以提高其并发处理能力,同时处理多个客户端请求,减少请求的排队等待时间。
  • 提高吞吐量:通过多线程处理客户端请求,Redis可以同时执行多个命令,提高系统的吞吐量,加快数据处理速度。
  • 高效利用资源:Redis引入线程后,可以更好地利用多核处理器的性能,充分发挥硬件资源的优势,提高系统的效率和性能。

总的就是redis引入多线程可以提高并发处理能力和性能,能够更好地应对高并发的请求,而且能充分利用多核处理器的性能,提高系统的吞吐量和响应速度。多线程还可以优化资源的利用和提高系统的效率,好好处多多。

另外很多人有个误解redis 不是单线程的吗?怎么并发处理?

这是对于Redis的误解。事实上,Redis在处理客户端请求时采用了单线程的模型,但这并不意味着它不能并发处理。

Redis之所以可以并发处理,主要有以下几个原因:

  • 非阻塞式I/O:Redis使用了非阻塞式的网络I/O模型,通过异步地处理网络请求,减少了对于阻塞等待的需求,提高了系统的并发处理能力。
  • 高速内存访问:Redis将数据存储在内存中,并通过内存访问来处理请求,相比于磁盘访问,内存访问更快速,能够更快地响应客户端请求。
  • 单线程模型的优化:虽然Redis使用单线程处理请求,但它通过使用高效的数据结构和算法来优化性能,例如使用跳表(Skip List)来实现有序集合,使用字典(Dictionary)来实现快速的键值查找,这些优化使得Redis能够在单线程下处理大量的请求。
  • 多路复用技术:Redis使用多路复用技术来管理多个客户端连接,通过监听多个连接的事件并进行处理,从而实现了同时处理多个客户端请求的能力。

尽管Redis在处理客户端请求时采用了单线程的方式,但它通过上面优化策略,使得单线程能够高效地处理并发请求。这也是Redis在性能高的原因之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1416793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文解读】Object Goal Navigation usingGoal-Oriented Semantic Exploration

论文:https://devendrachaplot.github.io/papers/semantic-exploration.pdf 代码:https://github.com/devendrachaplot/Object-Goal-Navigation 项目: Object Goal Navigation using Goal-Oriented Semantic Exploration example&#xff1…

找不同-《企业应用架构模式》2024典藏版

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 以下是2004年《企业应用架构模式》中译本和2024年《企业应用架构模式》典藏版译本的页面。 您能从中找出至少10处不同吗? 如何选择UMLChina服务 UMLChina公众号精选&…

Python代码耗时统计

time模块 在代码执行前后各记录一个时间点,两个时间戳相减即程序运行耗时。这种方式虽然简单,但使用起来比较麻烦。 time.time() 函数返回的时间是相对于1970年1月1日的秒数 import timestart time.time() time.sleep(1) end time.time() print(f&…

任正非最新讲话:没有退路就是胜利之路!

内容来源:本文来自心声社区 组织管理 9月4日,华为心声社区发布了华为创始人任正非在华为高端技术人才使用工作组对标会上的讲话。 任正非表示,先有专才,才有全才,要实现跨界交流、融合创新,让领袖自然成长…

实验3:数据显示输出

1、实验目的: 掌握将内存单元存储的数据显示输出到显示器的方法。 2、实验内容: 将内存单元存储的字节数据(例如 56H)的16进制数的低位输出到显示器并显示。 3、实验要求: (1)运行程序后&a…

mac安装mysql的8.0设置面板启动不了

1、前言 记得之前安装mysql5.7的时候,是可以直接从设置里面的mysql面板启动的,但是到了mysql8.0之后就启动不了了,这个问题不知道是版本问题还是我换了m系列芯片的mysql导致的,之前很多次都启动不了,这次搞了下&#x…

计算机提示缺失dll文件怎么办?那种dll解决方法更值得推荐

当在运行游戏,软件程序的过程中遇到“找不到dll”的情况时,这实际上意味着系统或应用程序无法定位并加载必要的动态链接库文件(DLL),从而无法顺利完成预期的功能调用和执行流程。这种问题的发生可能会引发一系列严重后…

使用自有数据集微调ChatGLM2-6B

1 ChatGLM2-6B介绍 ChatGLM是清华技术成果转化的公司智谱AI研发的支持中英双语的对话机器人。ChatGLM基于GLM130B千亿基础模型训练,它具备多领域知识、代码能力、常识推理及运用能力;支持与用户通过自然语言对话进行交互,处理多种自然语言任…

MySQL中使用percona-xtrabackup工具 三种备份及恢复 (超详细教程)

CSDN 成就一亿技术人! 今天讲讲再MySQL中使用percona-xtrabackup这个开源工具来实现在线备份。 CSDN 成就一亿技术人! 目录 介绍percona-xtrabackup 安装Percona 完整备份 备份流程 恢复流程 1.模拟文件损坏 2.滚回日志 3.恢复数据目录 4.授权…

《动手学深度学习(PyTorch版)》笔记4.6

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过。…

北京摇号政策梳理汇总

文章目录 政策梳理 家庭申请资格 家庭积分规则 参考资料 目前&#xff0c;北京车牌摇号实施的政策&#xff0c;主要是2021年1月1日的《<北京市小客车数量调控暂行规定>实施细则》。本文梳理了与博主本人直接相关的一些内容&#xff0c;可能对大部分网友也有帮助。 政…

vue中的computed

目录 一&#xff1a;介绍 二&#xff1a;例子演示 一&#xff1a;介绍 在 Vue.js 中&#xff0c;computed 属性是一种特殊类型的属性&#xff0c;它允许你声明依赖于其他数据属性的值。computed 属性的值是通过一个函数计算得出的&#xff0c;这个函数可以在其依赖的数据发生…

Java 数据结构篇-深入了解排序算法(动态图 + 实现七种基本排序算法)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 实现冒泡排序 2.0 实现选择排序 2.1 选择排序的改良升级 3.0 实现堆排序 4.0 实现插入排序 5.0 实现希尔排序 6.0 实现归并排序 6.1 递归实现归并排序 6.2 使用…

【misc | CTF】攻防世界 2017_Dating_in_Singapore

天命&#xff1a;这次终于碰到了算是真正的misc题目了 下载附件&#xff0c;打开是PDF&#xff0c;我一开始以为是flag隐写在PDF里面了 虽然也不奇怪&#xff0c;应该是可以的&#xff0c;毕竟PDF有xss漏洞也是可以的 言归正传&#xff0c;打开PDF 看着新加坡的日历&#xff…

汽车网络安全管理体系框架与评价-汽车网络安全管理体系框架

R155《网络安全与网络安全管理系统》法规中明确指出 &#xff0c; 汽车制造商应完成 “汽车网络安全管理体系认证” &#xff08;简称&#xff1a; CSMS认证&#xff09;以及 “车辆型式审批&#xff02; 且CSMS认证&#xff0c;是车辆型式审批的前提条件。 虽然我国相关政策尚…

走方格(动态规划)

解题思路&#xff1a; 找边界&#xff0c;即行为1&#xff0c;列为1。 拆分问题&#xff0c;拆分成一次走一步&#xff0c;只能向右或者向下走。 解题代码&#xff1a; public static void main(String[] args) {int [][]arrnew int[31][31];Scanner scnew Scanner(Sys…

贪吃蛇/链表实现(C/C++)

本篇使用C语言实现贪吃蛇小游戏&#xff0c;我们将其分为了三个大部分&#xff0c;第一个部分游戏开始GameStart&#xff0c;游戏运行GameRun&#xff0c;以及游戏结束GameRun。对于整体游戏主要思想是基于链表实现&#xff0c;但若仅仅只有C语言的知识还不够&#xff0c;我们还…

java基础:面向对象——类与对象初体验

本文需要援引一下我以前的博客做引言。 Python语言&#xff1a;面向对象——类与对象初体验 当使用Java进行面向对象编程的入门学习时&#xff0c;可以创建一个猫类来实践。 案例代码如下 package object; //使用class关键字创建一个猫类 class Car{ // 初始化类中的成员变量…

【工具推荐】磁盘分析工具 | SpaceSniffer 高效分析

文章目录 1 下载2 分析 最近发现一款很好用的工具——SpaceSniffer&#xff08;磁盘空间分析工具&#xff09; 硬盘用久了&#xff0c;里头的文件总是杂乱不堪&#xff0c;十分影响效率和心情&#xff1b; 我们往往会忘记哪些内容占用的空间比较多~所以我们如果可以高效分析哪…

YOLOv8-Seg改进:AIFI 助力YOLO ,提升尺度内和尺度间特征交互能力 | 来自于RT-DETR

🚀🚀🚀本文改进:RT-DETR的AIFI (尺度内特征交互)助力YOLO ,提升尺度内和尺度间特征交互能力 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把手教你如何训练YOLOv8-seg; 2)模型创新,提升…