当前位置: 首页 > news >正文

Redis1

Redis的优势

1.性能极高

2.数据类型丰富

3.支持数据的持久化

4.支持数据备份

Redis除了能做什么?

分布式缓存、内存存储和持久化、分布式锁、排行榜、消息队列.....

Redis怎么实现消息队列?

Redis5.0新增的数据结构Stream可以用来做消息队列,不过和专业的消息队列相比还有很多欠缺。

Redis数据类型

1.String(字符串)

2.List(列表)

3.Hash(哈希表)

4.Set(集合)

5.Zset(sorted set:有序集合)

6.GEO(地理空间)

7.HyperLogLog(基数统计)

8.bitmap(位图)

9.bitfield(位域)

10.Stream(流)

最后两种不常见

Redis实现统计网站UV?

UV:独立访客,一般理解为客户端IP,需要去重

HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定且是很小的

Redis实现一个排行榜?

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。可以用Zset实现排行榜。

Redis单线程模型

Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以 I/O 操作在一般情况下往往不能直接返回,这会导致某一文件的 I/O 阻塞导致整个进程无法对其它客户提供服务,而 I/O 多路复用就是为了解决这个问题而出现

所谓 I/O 多路复用机制,就是说通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或写就绪),能够通知程序进行相应的读写操作。这种机制的使用需要 select 、 poll 、 epoll 来配合。多个连接共用一个阻塞对象,应用程序只需要在一个阻塞对象上等待,无需阻塞等待所有连接。当某条连接有新的数据可以处理时,操作系统通知应用程序,线程从阻塞状态返回,开始进行业务处理。
Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器、事件处理器。因为文件事件分派器队列的消费是单线程的,所以Redis才叫单线程模型

Redis6.0之前为什么不使用多线程依旧很快?

1.基于内存操作

2.数据结构简单

3.多路复用和非阻塞I/O

4.避免上下文的切换

Redis6.0之前性能瓶颈不在CPU

Redi6.0之后为何引入了多线程?

提高网络IO读写性能

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vscode的json文件解析
  • Halcon学习之create_shape_model案例分解
  • TiDB系列之:使用Flink TiDB CDC Connector采集数据
  • Java中的Map(如果想知道Java中有关Map的知识点,那么只看这一篇就足够了!)
  • 【过题记录】 8.3
  • CTFHUB-SSRF-DNS重绑定 Bypass
  • [米联客-安路飞龙DR1-FPSOC] UDP通信篇连载-01 以太网协议介绍
  • ai web 1.0靶机漏洞渗透详解
  • 搭建个人的金融系统-----第一章,数据库设计
  • Arch Linux - 2-安装中文输入法
  • 解析 C# Dictionary 代码
  • Comfyui实例容器运行横向扩展
  • 【ROS 最简单教程 003/300】ROS 快速体验:Hello World
  • C# Where关键字
  • 数学建模--蒙特卡罗随机模拟
  • 分享一款快速APP功能测试工具
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • bootstrap创建登录注册页面
  • canvas 绘制双线技巧
  • CentOS 7 防火墙操作
  • css布局,左右固定中间自适应实现
  • EOS是什么
  • es6
  • flutter的key在widget list的作用以及必要性
  • Spring Cloud Feign的两种使用姿势
  • 彻底搞懂浏览器Event-loop
  • 初识 webpack
  • 飞驰在Mesos的涡轮引擎上
  • 高程读书笔记 第六章 面向对象程序设计
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 技术:超级实用的电脑小技巧
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 使用putty远程连接linux
  • 算法系列——算法入门之递归分而治之思想的实现
  • 听说你叫Java(二)–Servlet请求
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • Python 之网络式编程
  • 我们雇佣了一只大猴子...
  • !$boo在php中什么意思,php前戏
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (04)odoo视图操作
  • (42)STM32——LCD显示屏实验笔记
  • (C#)获取字符编码的类
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (SpringBoot)第七章:SpringBoot日志文件
  • (windows2012共享文件夹和防火墙设置
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (回溯) LeetCode 40. 组合总和II
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (一)Docker基本介绍
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法