iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >关于Redis的详细简介
  • 862
分享到

关于Redis的详细简介

2024-04-02 19:04:59 862人浏览 泡泡鱼
摘要

这篇文章主要介绍关于Redis的详细简介,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Redis的高并发和快速原因1.redis是基于内存的,内存的读写速度非常快;2.redis是单

这篇文章主要介绍关于Redis的详细简介,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Redis的高并发和快速原因

1.redis是基于内存的,内存的读写速度非常快;
2.redis是单线程的,省去了很多上下文切换线程的时间;
3.redis使用多路复用技术,可以处理并发的连接。非阻塞io 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间。

下面重点介绍单线程设计和IO多路复用核心设计快的原因。

为什么Redis是单线程的

1.官方答案
因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。
2.性能指标
关于redis的性能,官方网站也有,普通笔记本轻松处理每秒几十万的请求。
3.详细原因
1)不需要各种的性能消耗
Redis的数据结构并不全是简单的Key-Value,还有list,hash等复杂的结构,这些结构有可能会进行很细粒度的操作,比如在很长的列表后面添加一个元素,在hash当中添加或者删除
一个对象。这些操作可能就需要加非常多的锁,导致的结果是同步开销大大增加。
总之,在单线程的情况下,就不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗。
2)单线程多进程集群方案
单线程的威力实际上非常强大,每核心效率也非常高,多线程自然是可以比单线程有更高的性能上限,但是在今天的计算环境中,即使是单机多线程的上限也往往不能满足需要了,需要进一步摸索的是多服务器集群化的方案,这些方案中多线程的技术照样是用不上的。
所以单线程、多进程的集群不失为一个时髦的解决方案。
3)CPU消耗
采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU。
但是如果CPU成为Redis瓶颈,或者不想让服务器其他CUP核闲置,那怎么办?
可以考虑多起几个Redis进程,Redis是key-value数据库,不是关系数据库,数据之间没有约束。只要客户端分清哪些key放在哪个Redis进程上就可以了。

Redis单线程的优劣势

单进程单线程优势
代码更清晰,处理逻辑更简单
不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗
不存在多进程或者多线程导致的切换而消耗CPU
单进程单线程弊端
无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来完善;
IO多路复用技术
redis 采用网络IO多路复用技术来保证在多连接的时候, 系统的高吞吐量。
多路-指的是多个Socket连接,复用-指的是复用一个线程。多路复用主要有三种技术:select,poll,epoll。epoll是最新的也是目前最好的多路复用技术。
这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗),且Redis在内存中操作数据的速度非常快(内存内的操作不会成为这里的性能瓶颈),主要以上两点造就了Redis具有很高的吞吐量。

Redis高并发快总结

  1. Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO上,所以读取速度快。
  2. 再说一下IO,Redis使用的是非阻塞IO,IO多路复用,使用了单线程来轮询描述符,将数据库的开、关、读、写都转换成了事件,减少了线程切换时上下文的切换和竞争。
  3. Redis采用了单线程的模型,保证了每个操作的原子性,也减少了线程的上下文切换和竞争。
  4. 另外,数据结构也帮了不少忙,Redis全程使用hash结构,读取速度快,还有一些特殊的数据结构,对数据存储进行了优化,如压缩表,对短数据进行压缩存储,再如,跳表,使用有序的数据结构加快读取的速度。
  5. 还有一点,Redis采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大。

以上是关于Redis的详细简介的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: 关于Redis的详细简介

本文链接: https://www.lsjlt.com/news/49077.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于Redis的详细简介
    这篇文章主要介绍关于Redis的详细简介,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Redis的高并发和快速原因1.redis是基于内存的,内存的读写速度非常快;2.redis是单...
    99+
    2024-04-02
  • 关于redis命令的详细介绍
    小编给大家分享一下关于redis命令的详细介绍,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!              &...
    99+
    2024-04-02
  • 关于Redis数据库入门详细介绍
    目录1、Redis是什么?2、Redis特点:单线程为何如此快?3、redis 对比 memcached4、redis 典型应用场景:5、Redis下载与安装:Redis服务...
    99+
    2024-04-02
  • 关于Flask上下文详细介绍
    目录1、上下文概念2、Flask中的上下文2.1请求上下文2.2应用上下文 1、上下文概念 上下文,说白了就是所谓的语境,就是语言环境。比如单独拎出来一篇文章的某一句话,我们可能不能...
    99+
    2024-04-02
  • 较详细的JNI简介
    在Java中,有时候我们不得不要去使用其他语言的代码,比如说:你的应用需要访问系统的各个特性和设备,这些特性和设备通过java平台是无法访问的。你已经有了大量的测试过和调试过的用另一种语言编写的代码,并且知道如何将其导出到所有的目标平台上。...
    99+
    2023-05-31
    jni 简介 j
  • 关于pyqt5弹出提示框的详细介绍
    目录前言1.软件关闭弹框2.信息提示框3.错误提示框4.警告提示框5.关于弹窗附:Python-PyQt5错误提示弹框总结前言 最近在用pyqt5设计软件时,想到了一些关于提示框的操...
    99+
    2024-04-02
  • 关于PyTorch中nn.Module类的简介
    目录PyTorch nn.Module类的简介PyTorch中nn.Module理解总结PyTorch nn.Module类的简介 torch.nn.Module类是所有神经网络模块...
    99+
    2023-02-20
    PyTorch中nn.Module nn.Module类的简介 PyTorch nn.Module类
  • PHP简介(非常详细)
    PHP(Hypertext Preprocessor,超文本预处理器)是一种通用开源脚本语言,其语法吸收了C语言、Java 和 Perl 的特点,利于学习,使用广泛,主要适用于 Web 开发领域。 PHP 独特的语法混合了 C、Java、P...
    99+
    2023-09-02
    php apache 服务器 经验分享 开发语言
  • Java操作Redis详细介绍
    1. 简介Redis 是一个开源(BSD许可)的,内存中的key-value存储系统,它可以用作数据库、缓存和消息中间件。2. 对key的操作首先要建立连接Jedis jedis = new Jedis("127.0.0.1", 6379)...
    99+
    2023-05-30
    java redis使用
  • Java中关于Collections集合工具类的详细介绍
    Collections 是一个操作 Set、List 和 Map 等集合的工具类。 Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集...
    99+
    2024-04-02
  • Redis中GETBIT和SETBIT的详细介绍
    本篇内容介绍了“Redis中GETBIT和SETBIT的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2024-04-02
  • Java关于List集合去重方案详细介绍
    1 常规去重 碰到List去重的问题,除了遍历去重,我们常常想到利用Set集合不允许重复元素的特点,通过List和Set互转,来去掉重复元素。 // 遍历后判断赋给另一个List...
    99+
    2024-04-02
  • Redis分布式锁详细介绍
    目录分布式锁redis实现分布式锁的原理死锁问题超时问题锁误放问题可重入性Redlock分布式锁 在单进程应用中,当一段代码同一时间内只能由一个线程执行时, 多线程下可能会出错,例如...
    99+
    2024-04-02
  • redis数据类型strings的详细介绍
    本篇内容主要讲解“redis数据类型strings的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“redis数据类型strings的详细介绍”吧!1.&...
    99+
    2024-04-02
  • Python量化交易详细简介
    目录一、量化交易概述(algo-trading)1.历史评估2.效率3.没有任意的输入4.更高的频率二、交易系统1.回测-backtest2.交易所3.交易费一、量化交易概述(alg...
    99+
    2024-04-02
  • Redis的简介分析
    这篇文章主要介绍Redis的简介分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 Redis简介什么是Redis Redis是完全开源免费的,遵守BSD协议,是⼀个⾼性能(NOS...
    99+
    2024-04-02
  • Java关键字null的详细介绍
    本篇内容主要讲解“Java关键字null的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java关键字null的详细介绍”吧!一、null是代表不确定的对象Java中,null是一个关键...
    99+
    2023-06-17
  • 关于Redis数据持久化的概念介绍
    目录一、数据持久化的概述1、RDB持久化2、开启AOF二 .RDB 和 AOF 的优缺点 1、 RDB 持久化优缺点2、 AOF 持久化优缺点一、数据持久化的概述 Redi...
    99+
    2024-04-02
  • 关于GitLabAPI的详细使用教程
    目录1 简介2 API 介绍3 API 使用3.1 获取 Projects 数据3.2 获取指定 Project 数据3.3 获取 branches 数据3.4 获取指定 branc...
    99+
    2023-05-13
    GitLab教程 GitLab API GitLabAPI教程
  • 关于docker容器部署redis步骤介绍
    目录1 redis配置文件2 docker命令启动3 docker-compose启动1 redis配置文件 官方下载:redis.conf 路径:在容器中,一般可以保存在/etc/...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作