Redis11问

Redis11问

https://blog.csdn.net/qq_31960623/article/details/116427752

1 基本数据类型

  • String
  • list
  • hash
  • set
  • zset

2 redis为什么块

  1. 内存操作
  2. 优化过的数据结构
  3. 单线程无上下文切换
  4. 基于非阻塞的IO多路复用

3 redis6.0为什么改为多线程

redis使用多线程并不是放弃单线程 还是单线程模型处理客户端请求 多线程处理数据的读写和协议的解析 执行命令还是单线程;

这样做的目的 redis的瓶颈时在IO而不是CPU 使用多线程提升IO

4 热key解决方案

  1. 提前将热key打撒到不同的服务器
  2. 加入二级缓存 走内存查询

5 缓存击穿 穿透 雪崩

  1. 击穿 单key并发访问过万 过期导致请求DB

    • 对key加锁更新
    • 异步刷新过期时间
  2. 穿透 查询不存在的值

    • key对应null值
    • 布隆过滤器 为0一定不存在; 存在的会误判雪崩
  3. 雪崩 多key失效 请求到DB

    • key不同失效时间
    • DB限流
    • 二级缓存 同热key

6 redis过期策略

  1. 惰性删除 key查询对key检测 key过期?删除
  2. 定期删除 随机取key检查

7 惰性+定期没有删除过期key怎么办?

走到redis内存淘汰机制 已设置过期=定期

  1. volatile-lru: 定期key中 删除最近最少使用
  2. volatile-ttl: 定期key中 移除将要过期key
  3. volatile-random: 定期key中 随机
  4. allkeys-lru
  5. allkeys-random
  6. noeviction: 内存达到阈值 写入报错

8 持久化方式有哪些?区别?

9 实现redis高可用?

10 redis集群原理

11 redis的事务机制

Redis11问

上一篇:elementUI el-select获取点击项的整个对象item


下一篇:zabbix-agent和zabbix-agent2的区别