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

装修公司做网销的网站佛山网络营销推广

装修公司做网销的网站,佛山网络营销推广,广州最新新闻病毒,厦门网站建设2015Redis基础知识One Redis简介为什么用 Redis 作为 MySQL 的缓存?1.Redis 具备高性能2.Redis具备高并发 Redis包含的数据结构Redis里面数据结构的应用场景Redis里面数据结构的实现 Redis线程模型补充什么是跳表跳表特性 Redis采用单线程为什么还这么快 Redis简介 Redi…

Redis基础知识One

  • Redis简介
  • 为什么用 Redis 作为 MySQL 的缓存?
    • 1.Redis 具备高性能
    • 2.Redis具备高并发
  • Redis包含的数据结构
    • Redis里面数据结构的应用场景
    • Redis里面数据结构的实现
  • Redis线程模型
      • 补充什么是跳表
        • 跳表特性
    • Redis采用单线程为什么还这么快

Redis简介

在这里插入图片转载描述
Redis 是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存,消息队列、分布式锁等场景。
Redis 提供了多种数据类型来支持不同的业务场景,比如 String(字符串)、Hash(哈希)、 List (列表)、Set(集合)、Zset(有序集合)、Bitmaps(位图)、HyperLogLog(基数统计)、GEO(地理信息)、Stream(流),并且对数据类型的操作都是原子性的,因为执行命令由单线程负责的,不存在并发竞争的问题。

除此之外,Redis 还支持事务 、持久化、Lua 脚本、多种集群方案(主从复制模式、哨兵模式、切片机群模式)、发布/订阅模式,内存淘汰机制、过期删除机制等等。

为什么用 Redis 作为 MySQL 的缓存?

主要是因为 Redis 具备「高性能」和「高并发」两种特性。

1.Redis 具备高性能

用户刚开始访问Mysql是从硬盘访问,速度缓慢,而你直接做缓存在Redis中,则直接在内存中访问,所以速度相当快。

2.Redis具备高并发

单台设备的 Redis 的 QPS(Query Per Second,每秒钟处理完请求的次数) 是 MySQL 的 10 倍,Redis 单机的 QPS 能轻松破 10w,而 MySQL 单机的 QPS 很难破 1w。

所以,直接访问 Redis 能够承受的请求是远远大于直接访问 MySQL 的,所以我们可以考虑把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库。

Redis包含的数据结构

Redis 提供了丰富的数据类型,常见的有五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合)。
随着 Redis 版本的更新,后面又支持了四种数据类型: BitMap(2.2 版新增)、HyperLogLog(2.8 版新增)、GEO(3.2 版新增)、Stream(5.0 版新增)。

Redis里面数据结构的应用场景

String 类型的应用场景:缓存对象、常规计数、分布式锁、共享 session 信息等。

List 类型的应用场景:消息队列(但是有两个问题:1. 生产者需要自行实现全局唯一 ID;2. 不能以消费组形式消费数据)等。

Hash 类型:缓存对象、购物车等。

Set 类型:聚合计算(并集、交集、差集)场景,比如点赞、共同关注、抽奖活动等。

Zset 类型:排序场景,比如排行榜、电话和姓名排序等。

BitMap(2.2 版新增):二值状态统计的场景,比如签到、判断用户登陆状态、连续签到用户总数等;

HyperLogLog(2.8 版新增):海量数据基数统计的场景,比如百万级网页 UV 计数等;

GEO(3.2 版新增):存储地理位置信息的场景,比如滴滴叫车;

Stream(5.0 版新增):消息队列,相比于基于 List 类型实现的消息队列,有这两个特有的特性:自动生成全局唯一消息ID,支持以消费组形式消费数据。

Redis里面数据结构的实现

在这里插入图片描述
具体实现我会单发博客

Redis线程模型

Redis 单线程指的是「接收客户端请求->解析请求 ->进行数据读写等操作->发送数据给客户端」这个过程是由一个线程(主线程)来完成的,这也是我们常说 Redis 是单线程的原因。

但是,Redis 程序并不是单线程的,Redis 在启动的时候,是会启动后台线程(BIO)的:

Redis 在 2.6 版本,会启动 2 个后台线程,分别处理关闭文件、AOF 刷盘这两个任务;
Redis 在 4.0 版本之后,新增了一个新的后台线程,用来异步释放 Redis 内存,也就是 lazyfree 线程。例如执行 unlink key / flushdb async / flushall async 等命令,会把这些删除操作交给后台线程来执行,好处是不会导致 Redis 主线程卡顿。因此,当我们要删除一个大 key 的时候,不要使用 del 命令删除,因为 del 是在主线程处理的,这样会导致 Redis 主线程卡顿,因此我们应该使用 unlink 命令来异步删除大key。
之所以 Redis 为「关闭文件、AOF 刷盘、释放内存」这些任务创建单独的线程来处理,是因为这些任务的操作都是很耗时的,如果把这些任务都放在主线程来处理,那么 Redis 主线程就很容易发生阻塞,这样就无法处理后续的请求了。

后台线程相当于一个消费者,生产者把耗时任务丢到任务队列中,消费者(BIO)不停轮询这个队列,拿出任务就去执行对应的方法即可。

在这里插入图片描述
关闭文件、AOF 刷盘、释放内存这三个任务都有各自的任务队列:

BIO_CLOSE_FILE,关闭文件任务队列:当队列有任务后,后台线程会调用 close(fd) ,将文件关闭;
BIO_AOF_FSYNC,AOF刷盘任务队列:当 AOF 日志配置成 everysec 选项后,主线程会把 AOF 写日志操作封装成一个任务,也放到队列中。当发现队列有任务后,后台线程会调用 fsync(fd),将 AOF 文件刷盘,
BIO_LAZY_FREE,lazy free 任务队列:当队列有任务后,后台线程会 free(obj) 释放对象 / free(dict) 删除数据库所有对象 / free(skiplist) 释放跳表对象;

补充什么是跳表

跳表全称叫做跳跃表,简称跳表。跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。

跳表在性能上和红黑树,AVL树不相上下,但是跳表的原理非常简单,目前在Redis和LeveIDB中都有用到。

跳表采用随机技术决定元素应该在哪几层,其中的搜索、插入、删除操作的时间均为O(logn),然而,最坏情况下时间复杂性却变成O(n)。相比之下,在一个有序数组或链表中进行插入/删除操作的时间为O(n),最坏情况下为O(n)。

查找的时间复杂度 = 索引的高度 * 每层索引遍历元素的个数

跳表特性

1.2 特性
跳表是可以实现二分查找的有序链表;
由很多层结构组成,每一层都是一个有序的链表, level是通过一定的概率随机产生的。
最底层(Level 1)的链表包含所有元素
如果一个元素出现在 Level i 的链表中,则它在 Level i 之下的链表也都会出现
每个索引节点包含两个指针,一个向下,一个向右;
跳表查询、插入、删除的时间复杂度为O(log n),与平衡二叉树接近;

Redis采用单线程为什么还这么快

官方使用基准测试的结果是,单线程的 Redis 吞吐量可以达到 10W/每秒,如下图所示:
在这里插入图片描述
之所以 Redis 采用单线程(网络 I/O 和执行命令)那么快,有如下几个原因:

Redis 的大部分操作都在内存中完成,并且采用了高效的数据结构,因此 Redis 瓶颈可能是机器的内存或者网络带宽,而并非 CPU,既然 CPU 不是瓶颈,那么自然就采用单线程的解决方案了;
Redis 采用单线程模型可以避免了多线程之间的竞争,省去了多线程切换带来的时间和性能上的开销,而且也不会导致死锁问题。
Redis 采用了 I/O 多路复用机制处理大量的客户端 Socket 请求,IO 多路复用机制是指一个线程处理多个 IO 流,就是我们经常听到的 select/epoll 机制。简单来说,在 Redis 只运行单线程的情况下,该机制允许内核中,同时存在多个监听 Socket 和已连接 Socket。内核会一直监听这些 Socket 上的连接请求或数据请求。一旦有请求到达,就会交给 Redis 线程处理,这就实现了一个 Redis 线程处理多个 IO 流的效果。

http://www.bjxfkj.com.cn/article/107148.html

相关文章:

  • 柯桥区建设局网站seo在线优化网站
  • 网站建设设计制作培训下载百度app到手机上
  • 自己做销售独立网站常德论坛网站
  • 搭建什么网站能盈利小米口碑营销案例
  • 建设美团网站北京seo百度推广
  • 宾馆做网站品牌运营策略
  • 专做韩国代购的网站网络推广的方式和途径有哪些
  • 哪里做网站最便宜中国网络营销网
  • 自动生成作文的网站足球比赛直播2021欧冠决赛
  • 做网站的图片百度云电脑网页版入口
  • 搜狐网站开发seo是什么服务
  • 为餐饮企业做网站推广泰安百度推广电话
  • 网站域名被重定向杭州网站优化企业
  • 学校网站建设主要成绩企业文化设计
  • 新网站建设流程站长工具推荐网站
  • 个人做新闻网站处罚化学sem是什么意思
  • 网站如何备案 附备案流程图郑州网站建设价格
  • 建筑必看六个网站搜索引擎大全
  • 专业的深圳网站设计百度排行榜风云榜
  • 网站后台 ftpseo流量的提升的软件
  • 网站建设平台 创新模式掌门一对一辅导官网
  • 免费美国网站品牌策划方案模板
  • 免费申请qq靓号慧聪网seo页面优化
  • 昆明做网站建设的公司上海百度推广公司排名
  • 用护卫神做共享网站推广app用什么平台比较好
  • 张家港那家做网站郑州seo优化培训
  • 台州网站建设优化案例安卓嗅探app视频真实地址
  • wordpress全屏滚动上海怎么做seo推广
  • 和硕网站建设找客源免费用哪个软件好
  • 怎样购买网站程序百度网盘资源搜索引擎