Redis

一,redis是单线程还是多线程

1、Redis5及之前是单线程版本
2、Redis6开始引入多线程版本(实际上是 单线程+多线程 版本)

     Redis5及之前的版本使用的是 单线程,只有一个 worker队列,读写操作都要在这一个队列进行操作,好处是线程安全。缺点:读写占用大部分cpu时间。

   Redis6引入了多线程机制,有 “一个 worker线程+多个IO子线程”,在 IO 就绪之后使用多线程读写解析数据,单线程操作内存数据,单线程+多线程机制,提高了cpu使用效率。

   请求是多线程的,内存读写操作仍然是单线程。

二,redis存在线程安全问题吗

     从Redis 服务端层面,redis单线程执行操作命令,线程安全。

     从Redis客户端层面,有多个客户端同时执行多个指令的情况,无法保证原子性。

三,遇到过缓存穿透吗?

     缓存穿透就是缓存和数据库中都没有的数据,短时间大量请求全到数据库上造成数据库压力。

     解决:接口层增加校验,用户鉴权校验,短时间大量请求直接拦截。

四, 遇到过缓存击穿吗?

      缓存击穿是指缓存中没有数据库中有的数据,大量请求直接查数据库。

      解决:热点数据设置更长的过期时间。

五,如何避免缓存雪崩

       缓存雪崩是指 缓存同一时间大面积失效,数据库压力增大。

      解决:过期时间设置随机,避免同一时间大量失效

                 加锁排队

六,缓存预热

       系统上线后,将相关的缓存数据直接加载到缓存系统。

       方式:定时刷新缓存

七,数据库与缓存不一致如何解决

       1,读写串行化,但吞吐量大幅降低

       2,更新完数据库后删除缓存

八,redis持久化方式

      RDB(默认):redis缩写快照

      AOF:记录以 redis 命令请求

      AOF比RDB更安全

      RDB性能更好

      AOF比RDB更新频率高

九,redis 单线程主要是指redis在网络io和键值对读写采用一个线程来完成,redis的单线主要是指redis在网络io和键值对读写采用一个线程来完成
对于其他redis功能来说比如持久化,集群同步数据等都是由其他额外线程执行的
单线程优势:
减少线程切换的资源消耗
由于一个线程,所以数据是安全的,避免多线程的线程安全问题
劣势:
不能发挥cpu多核优势
删除大键导致线程阻塞
4.0和6.0出现多线程机制
6.0多线程io模型需要手动开启
线程数要小于机器核数 io-threads: 6
缓存穿透 缓存击穿 缓存雪崩 缓存预热
穿透击穿预热雪崩

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值