范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

redis是什么(redis原理详解)

  又到了金三银四跳槽季,好多同学已经开始行动了。今天我来助力一把,送出这套 Redis 面试题,助力大家通关。
  图片来自 Pexels
  Redis 为什么响应快
  ①数据保存在内存中
  Redis 数据保存在内存中,读写操作只要访问内存,不需要磁盘 IO。②底层数据结构
  如下:Redis 的数据以 key:value 的格式存储在散列表中,时间复杂度 o(1)。Redis 为 value 定义了丰富的数据结构,包括动态字符串、双向链表、压缩列表、hash、跳表和整数数组,可以根据 value 的特性选择选择最高效的数据结构。③单线程模型
  Redis 的网络 IO 和数据读写使用单线程模型,可以绑定 CPU,这避免了线程上下文切换带来的开销。
  注意:Redis 6.0 对网络请求引入了多线程模型,读写操作还是用单线程。
  Redis 多线程网络模型见下图:
  ④IO 多路复用
  Redis 采用 Epoll 网络模型,如下图:
  内核会一直监听新的 socket 连接事件的和已建立 socket 连接的读写事件,把监听到的事件放到事件队列,Redis 使用单线程不停的处理这个事件队列。这避免了阻塞等待连接和读写事件到来。
  这些事件绑定了回调函数,会调用 Redis 的处理函数进行处理。
  Redis 底层数据结构
  Redis 有 5 种数据类型,包括:字符串、列表、集合、有序集合和字典。
  Redis 底层的数据结构有 6 种,包括:动态字符串、双向链表、压缩列表(ziplist)、hash 表、跳表(skip list)和整数数组。
  Redis 数据类型和底层数据结构有如下对应关系:
  ①字符串类型
  底层数据结构是动态字符串。
  ②列表
  如果同时满足下面条件,就使用压缩列表,否则使用双向链表:列表中单个元素小于 64 字节列表中元素个数少于 512
  压缩列表在内存中是一块儿连续的内存空间,结构如下:
  压缩列表查找时间复杂度是 o(n)。
  ③集合
  如果同时满足下面条件,就使用有序整数数组,否则使用 hash 表:集合中元素都是整数类型集合中元素个数不超过 512 个④有序集合
  如果同时满足下面 2 个条件,就使用压缩列表,否则使用跳表:集合中元素都小于 64 字节集合中元素个数小于 128 个
  注意:有序集合还有一个 HASH 表用于保存集合中元素的分数,做 ZSCORE 操作时,查询的就是这个 HASH 表,所以效率很高。
  跳表的结构如下:
  如果不加索引,查找 10 这个数字需要查询 10 次,使用了二级索引,查找 10 这个数字需要 5 次,而使用一级索引,需要查询 3 次。
  跳表的每一层都是一个有序链表,最下面一层保存了全部数据。跳表插入、删除、查询的时间复杂度是 o(logN)。跳表需要存储额外的索引节点,会增加额外的空间开销。
  ⑤字典
  如果同时满足下面 2 个条件,就使用压缩列表,否则使用 hash 表:字典中每个 entry 的 key/value 都小于 64 字节字典中元素个数小于 512 个
  Redis 缓存淘汰策略
  Redis 总共有 8 种淘汰策略,如下图:
  volatile-lfu 和 allkeys-lfu 策略是 4.0 版本新增的:lru:是按照数据的最近最少访问原则来淘汰数据,可能存在的问题是如果大批量冷数据最近被访问了一次,就会占用大量内存空间,如果缓存满了,部分热数据就会被淘汰掉。lfu:是按照数据的最小访问频率访问次数原则来淘汰数据,如果两个数据的访问次数相同,则把访问时间较早的数据淘汰。
  Redis 数据持久化
  Redis 持久化的方式有 2 种,一种是写后日志(AOF),一种是内存快照(RDB)。
  ①AOF 日志
  AOF 日志记录了每一条收到的命令,Redis 故障宕机恢复时,可以加载 AOF 日志中的命令进行重放来进行故障恢复。
  AOF 有 3 种同步策略,如下图:
  如果不是对丢失数据特别敏感的业务,推荐使用 everysec,对主线程的阻塞少,故障后丢失数据只有 1s。
  ②RDB 快照
  RDB 快照是一个内存快照,记录了 Redis 某一时刻的全部数据。
  ③混合日志
  从 Redis 4.0 开始,AOF 文件也可以保存 RDB 快照,AOF 重写的时候 Redis 会把 AOF 文件内容清空,先记录一份 RDB 快照,这份数据以"REDIS"开头。
  记录 RDB 内容后,AOF 文件会接着记录 AOF 命令。故障恢复时,先加载 AOF 文件中 RDB 快照,然后回放 AOF 文件中后面的命令。
  ④主从同步
  Redis 主从同步时,主节点会先生成一份 RDB 快照发送给从节点,把快照之后的命令写入主从同步缓存区(replication buffer),从节点把 RDB 文件加载完成后,主节点把缓存区命令发送给从节点。
  ⑤AOF 重写
  AOF 日志是用记录命令的方式追加的,这样可能存在对同一个 key 的多条命令,这些命令是可以合并成 1 条的。比如对同一个 key 的多个 set 操作日志,可以合成一条。
  ⑥阻塞点
  AOF 重写和 RDB 快照执行的过程中,Redis 都会 Fork 一个子进程来执行操作,子进程执行过程中是不是阻塞主线程的。
  但是要注意 2 点:Fork 子进程的过程中,Redis 主线程会拷贝一份内存页表(记录了虚拟内存和物理内存的映射关系)给子进程,这个过程是阻塞的,Redis 主线程内存越大,阻塞时间越长。子进程和 Redis 主线程共用一块儿物理内存,如果新的请求到来,必须使用 copy on write 的方式,拷贝要修改的数据页到新的内存空间进行修改。如下图:
  注意:如果开启了内存大页,每次拷贝都需要分配 2MB 的内存。
  Redis 高可用
  下图是一个"一主二从三哨兵"的架构图:
  从图我们可以看到哨兵之间、哨兵和主从节点之间、哨兵和客户端之间都建立了连接。
  如果主节点挂了,哨兵集群需要完成主从切换,如下图:
  下面我们依次来聊一下这 4 个步骤。
  ①判断主节点下线
  当一个哨兵监控到主节点下线时,就会给其他哨兵发送确认命令,其他命令会根据自己的判断回复"Y"或"N"。
  如果有 n/2 1 以上数量的哨兵都认为主节点下线了,才会判定主节点下线。这里的n是哨兵集群的数量。
  n/2 1 这个参数由 quorum 参数配置,比如有 5 个哨兵,这里一般配置成 3。也可以配置成其他值。
  ②选举新主节点
  主节点被判定下线后,哨兵集群会重新选择新的主节点。
  淘汰不稳定从节点:根据配置参数 down-after-milliseconds * 10 来淘汰。
  down-after-milliseconds 表示主从节点断开时间,10 表示次数,如果从节点跟主节点断开时间超过 down-after-milliseconds 的次数达到了 10 次以上,从节点就被淘汰了。
  slave-priority 参数:配置了从节点的优先级,选择从节点时哨兵会优先选择优先级高的从节点。
  复制进度:Redis 有一个记录主从增量复制的缓存区叫 repl_backlog_buffer。这是一个环形结构的缓冲区,如下图:
  主节点有一个写偏移量 master_repl_offset,从节点也有一个偏移量 slave_repl_offset。
  优先选择 slave_repl_offset 最接近 master_repl_offset 的从节点作为新的主节点。
  所以,上图中偏移量为 114 的从节点优先被选为新的主节点。
  ID 编号:优先级和参数都一样的情况下,ID 编号小的从节点优先被选为新主节点。
  ③选举哨兵 Leader
  第一个判断主节点下线的哨兵节点收到其他节点的回复并确定主节点下线后,就会给其他哨兵发送命令申请成为哨兵 Leader。
  成为 Leader 的条件如下:收到赞成票必须大于等 quorum 值必须拿到半数以上的赞成票
  如果集群配置了 5 个哨兵,quorum 的值设置为 3,其中一个哨兵节点挂了,很有可能会判断到主节点下线,但是因为选举不出哨兵 Leader 而不能切换。
  如果集群有 2 个哨兵,其中一个挂了,那必定选不出哨兵 Leader。
  下面的图展示了哨兵一成功当选 Leader 的过程:
  ④主节点切换
  选出新主节点和哨兵 Leader 后,哨兵 Leader 会执行主从切换的操作。
  完成后会做一些事件通知:通知其他哨兵新主节点地址通知所有从节点新的主节点地址,从节点收到后向新主节点请求主从同步通知客户端连接新主节点⑤主从切换过程中请求处理
  如果客户端的读请求会发送到从节点,可以正常处理。在客户端收到新主节点地址通知前写请求会失败。客户端可以采取一些应急措施应对主节点下线,比如缓存写请求。
  为了能够及时获取到新主节点信息,客户端可以订阅哨兵的主节点下线事件和新主节点变更事件。
  Redis 为什么变慢了
  Redis 变慢了的原因有很多,总结一下有 11 个,见下图:
  从图中看出,Redis 变慢原因主要有两类:阻塞主线程和操作系统限制。
  ①主线程阻塞
  AOF 重写和 RDB 快照:前面已经讲过了,Redis 在 AOF 重写时,主线程会 Fork 出一个 bgrewriteaof 子进程。Redis 进行 RDB 快照时主线程会 Fork 出一个 bgsave 子进程。
  这两个操作表面上看不阻塞主线程,但 Fork 子进程的这个过程是在主线程完成的。
  Fork 子进程时 Redis 需要拷贝内存页表,如果 Redis 实例很大,这个拷贝会耗费大量的 CPU 资源,阻塞主线程的时间也会变长。
  内存大页:Redis 默认支持内存大页是 2MB,使用内存大页,一定程度上可以减少 Redis 的内存分配次数,但是对数据持久化会有一定影响。
  Redis 在 AOF 重写和 RDB 快照过程中,如果主线程收到新的写请求,就需要 CopyOnWrite。
  使用了内存大页,即使 Redis 只修改其中一个大小是 1kb 的 key,也需要拷贝一整页的数据,即 2MB。在写入量较多时,大量拷贝就会导致 Redis 性能下降。
  命令复杂度高:执行复杂度高的命令是造成 Redis 阻塞的常见原因。比如对一个 set 或者 list 数据类型执行 SORT 操作,复杂度是 O(N M*log(M))。
  bigkey 操作:如果一个 key 的 value 非常大,创建的时候分配内存会很耗时,删除的时候释放内存也很耗时。
  Redis 4.0 以后引入了 layfree 机制,可以使用子进程异步删除,从而不影响主线程执行。用 UNLINK 命令替代 DEL 命令,就可以使用子进程异步删除。
  Redis 6.0 增加了配置项 lazyfree-lazy-user-del,配置成 yes 后,del 命令也可以用子进程异步删除。
  如果 lazyfree-lazy-user-del 不设置为 yes,那 Redis 是否采用异步删除,是要看删除的时机的。
  对于 String 类型和底层采用整数数组和压缩列表的数据类型,Redis 是不会采用异步删除的。
  从节点全量同步:从节点全量同步过程中,需要先清除内存中的数据,然后再加载 RDB 文件,这个过程中是阻塞的,如果有读请求到来,只能等到加载 RDB 文件完成后才能处理请求,所以响应会很慢。
  另外,如果 Redis 实例很大,也会造成 RDB 文件太大,从库加载时间长。所以尽量保持 Redis 实例不要太大,比如单个实例限制 4G,如果超出就采用切片集群。
  AOF 同步写盘:appendfsync 策略有 3 种:always、everysec、no,如果采用 always,每个命令都会同步写盘,这个过程是阻塞的,等写盘成功后才能处理下一条命令。
  除非是严格不能丢数据的场景,否则尽量不要选择 always 策略,推荐尽量选择 everysec 策略,如果对丢失数据不敏感,可以采用 no。
  内存达到 maxmemory:需要使用淘汰策略来淘汰部分 key。即使采用 lazyfree 异步删除,选择 key 的过程也是阻塞的。
  可以选择较快的淘汰策略,比如用随机淘汰来替换 LRU 和 LFU 算法淘汰。也可以扩大切片数量来减轻淘汰 key 的时间消耗。
  ②操作系统限制
  使用了 swap:使用 swap 的原因是操作系统不能给 Redis 分配足够大的内存,如果操作其他开启了 swap,内存数据就需要不停地跟 swap 换入和换出,对性能影响非常大。
  操作系统没有能力分配内存的原因也可能是其他进程使用了大量的内存。
  网络问题:如果网卡负载很大,对 Redis 性能影响会很大。这一方面有可能 Redis 的访问量确实很高,另一方面也可能是有其他流量大的程序占用了带宽。
  这个最好从运维层面进行监控。
  线程上下文切换:Redis 虽然是单线程的,但是在多核 CPU 的情况下,也可能会发生上下文切换。
  如果主线程从一个物理核切换到了另一个物理核,那就不能使用 CPU 高效的一级缓存和二级缓存了。
  如下图所示:
  为防止这种情况,可以把 Redis 绑定到一个 CPU 物理核。
  磁盘性能低:对于 AOF 同步写盘的使用场景,如果磁盘性能低,也会影响 Redis 的响应。可以优先采用性能更好的 SSD 硬盘。
  设计排行榜功能
  Redis 的 zset 类型保存了分数值,可以方便的实现排行榜的功能。
  比如要统计 10 篇文章的排行榜,可以先建立一个存放 10 篇文章的 zset,每当有读者阅读一篇文章时,就用 ZINCRBY 命令给这篇文章的分数加 1,最后可以用 range 命令统计排行榜前几位的文章。
  Redis 实现分布式锁
  ①Redis 单节点的分布式锁
  如下图,一个服务部署了 2 个客户端,获取分布式锁时一个成功,另一个就失败了。
  Redis 一般使用 setnx 实现分布式锁,命令如下:
  SETNX KEY_NAME VALUE
  设置成功返回 1,设置失败返回 0。使用单节点分布式锁存在一些问题。
  客户端 1 获取锁后发生了故障:结果锁就不能释放了,其他客户端永远获取不到锁。
  解决方法是用下面命令对 key 设置过期时间:
  SET key value [EX seconds] [PX milliseconds] NX
  客户端 2 误删除了锁:解决方法是对 key 设置 value 时加入一个客户端表示,比如在客户端 1 设置 key 时在 value 前拼接一个字符串 application1,删除的时候做一下判断。
  ②Redis 红锁
  Redis 单节点会有可靠性问题,节点故障后锁操作就会失败。Redis 为了应对单点故障的问题,设计了多节点的分布式锁,也叫红锁。
  主要思想是客户端跟多个 Redis 实例请求加锁,只有超过半数的实例加锁成功,才认为成功获取了分布式锁。
  如下图,客户端分别跟 3 个实例请求加锁,有 2 个实例加锁成功,所以获取分布式锁成功:
  缓存雪崩、击穿、穿透
  ①缓存雪崩
  Redis 做缓存时,如果同一时间大量缓存数据失效,客户端请求会大量发送到数据库,导致数据库压力激增。
  如下图:
  应对方法主要有 3 个:给 key 设置过期时间时加一个小的随机数限流服务降级②缓存击穿
  某个热点 key,突然过期了,大量请求发送到了数据库。解决方案是给热点 key 不设置过期时间。
  ③缓存穿透
  某个热点 key,查询缓存和查询数据库都没有,就发生了缓存穿透。
  如下图:
  应对方法主要有 2 个:缓存热点的空值和缺省值查询数据库之前先查询布隆过滤器
  数据倾斜
  什么是数据倾斜?看下面这个面试题:如果 Redis 有一个热点 key,QPS 能达到 100w,该如何存储?
  如果这个热点 key 被放到一个 Redis 实例上,这个实例面临的访问压力会非常大。
  如下图,redis3 这个实例保存了 foo 这个热点 key,访问压力会很大:
  解决方法主要有两个:
  ①使用客户端本地缓存来缓存 key。
  这样改造会有两个问题:客户端缓存的热点 key 可能消耗大量内存。客户端需要保证本地缓存和 Redis 缓存的一致性。
  ②给热点 key 加一个随机前缀,让它保存到不同的 Redis 实例上。
  这样也会存在两个问题:客户端在访问的时候需要给这个 key 加前缀客户端在删除的时候需要根据所有前缀来删除不同实例上保存的这个 key
  Bitmap 使用
  有一道经典的面试题,10 亿整数怎么在内存中去重排序?
  我们先算一下 10 亿整数占的内存,Java 一个整数类型占四字节,占用内存大小约:
  10亿 * 4 / 1024 / 1024 = 3.7G
  占得内存太大了,如果内存不够,怎么办呢?
  ①Bitmap 介绍
  Bitmap 类型使用的数据结构是 String,底层存储格式是二进制的 bit 数组。假如我们有 1、4、6、9 四个数,保存在 bit 数组中如下图:
  在这个 bit 数组中用 10 个 bit 的空间保存了四个整数,占用空间非常小。
  再回到面试题,我们使用 bit 数组长度是 10 亿整数中 (最大值-最小值 1)。
  如果有负数,需要进行一个转化,所有数字加最小负数的绝对值。比如 {-2, 0, 1, 3},我们转换成 {0, 2, 3, 5},因为数组下标必须从 0 开始。
  ②使用场景
  员工打卡记录:在一个有 100 个员工的公司,要统计一个月内员工全勤的人数,可以每天创建一个 Bitmap,签到的员工 bit 位置为 1。
  要统计当天签到的员工只要用 BITCOUNT 命令就可以。
  要统计当月全勤的员工,只要对当月每天的 Bitmap 做交集运算就可以。
  命令如下:
  BITOP AND srckey1 srckey2 srckey3 ... srckey30
  srckeyN 表示第 N 天的打卡记录 Bitmap。
  统计网站日活跃用户:比如网站有 10 万个用户,这样我们创建一个长度为 10 万的 Bitmap,每个用户 id 占一个位,如果用户登录,就把 bit 位置为 1,日终的时候用 BITCOUNT 命令统计出当天登录过的用户总数。
  作者:jinjunzhu
  编辑:陶家龙
  出处:转载自公众号程序员jinjunzhu

早点都有哪些(早餐不知道吃什么?)早点都有哪些(早餐不知道吃什么?)一周早餐怎么吃才能够保证营养和健康,做起来简单又省事呢?早餐作为一天中的第一餐,是极为重要的。大多数家庭都会在家里吃早餐,有的丰盛,有的简单,我也早餐吃什么东西(早餐不知道吃什么?)早餐吃什么东西(早餐不知道吃什么?)玉米排骨青菜汤健脾养胃特别适合生长发育关键期的青少年材料猪排2根鲜玉米1根姜片少许,小葱少许,食盐根据个人口味少许。首先将排骨清洗,玉米切块,姜健身早餐吃什么(一般早餐吃什么好)相信很多人都听说过三分练七分吃这句话,认为既然练就只占三分,那是不是训练就没那么重要呢?其实这句话应该理解为与释放自我的猛练相比,克制饮食更难执行,并且饮食营养在增肌过程中确实占有最佳的早餐是什么样的早餐(4种食物是早餐的最佳选择,难怪医生都天天吃)最佳的早餐是什么样的早餐(4种食物是早餐的最佳选择,难怪医生都天天吃)相信很多人都知道,一天中最重要的一餐就是早餐了,而且早餐营养学家觉得,如果每天的早餐都吃好,可以起到让人长寿的早餐可以吃什么(1种简单早餐小学生)我家小学生开学了,又到了早起做早餐的时候了。新学期,让孩子养成认真吃早餐的好习惯,从准备早餐开始吧。我在这里整理了一周早餐搭配,7天不重样,好做好吃。味道相对清淡,都是孩子喜欢的,可口可乐暂停全球社交媒体广告今天小编来给大家针对这个可口可乐暂停全球社交媒体广告的问题来进行一个介绍,毕竟当下也是有诸多的小伙伴对于可口可乐暂停全球社交媒体广告这个问题非常的重视的,下面大家可以看下具体的详情肯德基广告摊上事视频一出恶评如潮到底怎么了近日肯德基广告摊上事登录了热搜,也是在网上引起了网友们的关注,那么很多小伙伴可能还不清楚具体的情况如何,小编也是在网上查阅了一些信息,那么接下来就分享给大家来了解下肯德基广告摊上事肯德基广告摊上事具体怎么回事近日肯德基广告摊上事登录了热搜,也是在网上引起了网友们的关注,那么很多小伙伴可能还不清楚具体的情况如何,小编也是在网上查阅了一些信息,那么接下来就分享给大家来了解下肯德基广告摊上事肯德基暂停使用64年经典广告语肯德基是小朋友最喜欢吃的洋快餐,肯德基在我国这么多年一直经久不衰生意火爆,最近肯德基暂停使用64年经典广告语是怎么回事呢?原来是因为切合新冠疫情形势,将暂停使用拥有64年历史的吮指如何炖排骨(家常炖排骨)如何炖排骨(家常炖排骨)以前对于不会做饭的我来说,这是我开发的第一道肉菜。所以觉得非常有必要把它记录下来。Bygarfieldooooooo用料排骨1000g姜片34片葱段适量大料新派手机兼职是做什么的骗局揭秘虽然我很多年不上班,但是自己零花没断,而且还存了私房钱网络兼职挺多,但是我们要学会分析是否靠谱现在人手一部手机,人人可以拥有兼职副业,如果你很要强,欢迎来和雪姐聊聊新派商城手机兼职
什么事英语(什么是英文怎么翻译)在这篇文章里,我会先让大家了解英语的真面目,从而树立一个关于英语的正确概念。这个概念就是学习英语的指南针,它可以让你在英语的海洋中明确方向,而不迷失自我,陷入无谓的苦恼中。英语(英今日猪价最新行情交流(今日猪价行情价格表)全国猪价的行情可以说一波三折,为国内钢铁企业,随着生猪屠企的调价启动之后,生猪价格,月09日猪价猪价持续回落养猪越来越难猪价易跌难涨3月生猪出栏暴涨4月猪价跌势明显减缓,钢材企业提今日猪价最新行情吉林(今日猪价行情价格表)国家的调控时间总是有限的,12月1月和2月是全年猪肉消费最高的三个月,全国猪价,肉价再一度狂涨,为国内钢铁企业,那么6月30日猪价行情如何呢跟着小编一起来看看今日生猪价格最新价格表中南财经政法大学怎么样(中南政法学院咋样)中南财经政法大学,与上财央财PK,力争中国财经第一学府近些年,由于金融财会类专业的优良就业前景,导致财经类高校成为高考志愿填报的香饽饽。尤其是上海财经大学中央财经大学中南财经政法大ctrl是什么意思(键盘上的ctrl到底是啥英文?)ctrl是什么意思(键盘上的ctrl到底是啥英文?)小伙伴们,我猜你们应该都用过电脑吧。这个开场问题真的是问的我头皮都尴尬了。但是电脑键盘上面的各种按键所代表的英文单词你都知道吗?头发及腰要多久(头发长到齐腰需要多久)爱美的姑娘,总是喜欢捯饬头发。除了常规的烫染以外,还会剪个短发来考验自己的脸型。但过不了多久,又厌倦了清爽的短发。而短发留长又是一件非常麻烦又尴尬的事情,这时候我们该怎么做呢?短头今日广元利州猪价广元市利州区人民政府官网时时动车高铁票价,动车票免费配送,广元市利川区人民政府部门动态为积极预防和减少农村道路交通事故,武汉团风商会第二届会员代表大会暨今年新春联谊会在汉召开,畅谈发展,高铁订票网。近日,破冰什么意思(破冰雷霆二合一)什么是破冰游戏?破冰之意,是打破人际交往间怀疑猜忌疏远的藩篱,就像打破严冬厚厚的冰层。破冰游戏是帮助人们放松并变得乐于交往和相互学习。在短的时间内能够对彼此进行熟悉和了解。破冰活动茂盛年华(茂盛年华保温桶怎么样)茂盛年华1820岁是最美好的年华。是青春茂盛的时代。我在最美的年华与你相遇,与你们相遇,与命运相遇。然后就去争抢那原本属于我亦或不属于我的东西,以至满身是伤。学会演奏一件乐器自娱,山东大学称白湘菱不符合录取要求太可惜了近日有关于山东大学称白湘菱不符合录取要求的问题受到了很多网友们的关注,大多数网友都想要知道山东大学称白湘菱不符合录取要求的具体情况,那么关于到山东大学称白湘菱不符合录取要求的相关信明星的公司有哪些(如何找签约公司当艺人)离开泰洋川禾,如今无资源可用的杨颖,终究还是签约新公司了!11月18日,被称为时尚界奥斯卡的ELLE风尚大典在上海如期举行。很显然每届的大型盛典自然也少不了众明星走红毯的环节,而作