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

微服务day10-Redis面试篇

Redis主从

搭建主从集群

建立集群时主节点会生成同一的replicationID,交给各个从节点。 

集群中的缓冲区是一个环型数组,即若从节点宕机时间过长,可能导致命令被覆盖。

主从集群优化

哨兵原理

哨兵是一个集群来确保哨兵不出现问题。

服务状态监控

选举新主节点

故障转移

哨兵原理小结

搭建哨兵集群

操作文档

Redis分片

搭建分片集群

第三小章,详细操作icon-default.png?t=O83Ahttps://b11et3un53m.feishu.cn/wiki/Jck7w4GBSia4sukQn1vc9s3anMf

redis-cli --cluster create --cluster-replicas 1 \
192.168.21.101:7001 192.168.21.101:7002 192.168.21.101:7003 \
192.168.21.101:7004 192.168.21.101:7005 192.168.21.101:7006

散列插槽

[root@server02 redis-cluster]# docker exec -it r1 bash
root@server02:/data# redis-cli -p 7001
127.0.0.1:7001> set user jack
(error) MOVED 5474 192.168.21.101:7002
127.0.0.1:7001>

当我们读写数据时,Redis基于CRC16 算法对keyhash运算,得到的结果与16384取余,就计算出了这个keyslot值。然后到slot所在的Redis节点执行读写操作。

不过hash slot的计算也分两种情况:

  • key中包含{}时,根据{}之间的字符串计算hash slot

  • key中不包含{}时,则根据整个key字符串计算hash slot

例如:

  • key是user,则根据user来计算hash slot

  • key是user:{age},则根据age来计算hash slot

测试:进入r1容器,先于7001建立连接,写入数据。

[root@server02 redis-cluster]# docker exec -it r1 bash
root@server02:/data# redis-cli -p 7001
127.0.0.1:7001> set user jack
(error) MOVED 5474 192.168.21.101:7002
127.0.0.1:7001>

出现包错:

提示我们MOVED 5474,其实就是经过计算,得出user这个keyhash slot5474,而5474是在7002节点,不能在7001上写入!!

连接集群时,要加-c参数:

# 通过7001连接集群
redis-cli -c -p 7001
# 存入数据
set user jack

可知它会根据插槽不同跳转到不同的主节点:

root@server02:/data# redis-cli -c -p 7001
127.0.0.1:7001> set user jack
-> Redirected to slot [5474] located at 192.168.21.101:7002
OK
192.168.21.101:7002>

如果要将不同的key存放到同一个主从集群中需要再key前添加{}其中添加相同的数据。:

127.0.0.1:7001> set {user}:name tom
-> Redirected to slot [5474] located at 192.168.21.101:7002
OK
192.168.21.101:7002> set {user}:age 21
OK
192.168.21.101:7002>

Redis数据结构

RedisObject

SkipList

SortedSet

Redis内存回收

过期KEY的处理

内存淘汰策略

Redis缓冲问题

缓冲一致性

缓冲穿透

缓存雪崩

缓存击穿

http://www.lryc.cn/news/486702.html

相关文章:

  • STL序列式容器之list
  • docker:基于Dockerfile镜像制作完整案例
  • 微信小程序自定义顶部导航栏(适配各种机型)
  • sslSocketFactory not supported on JDK 9+
  • [Codesys]常用功能块应用分享-BMOV功能块功能介绍及其使用实例说明
  • 大语言模型通用能力排行榜(2024年11月8日更新)
  • 信息技术引领未来:大数据治理的实践与挑战
  • Git 分⽀规范 Git Flow 模型
  • 基于YOLOv8深度学习的公共卫生防护口罩佩戴检测系统(PyQt5界面+数据集+训练代码)
  • Nature Communications 基于触觉手套的深度学习驱动视触觉动态重建方案
  • 构建SSH僵尸网络
  • WPF中MVVM工具包 CommunityToolkit.Mvvm
  • 学习空闲任务函数
  • Hyper-v中ubuntu与windows文件共享
  • 【软件工程】一篇入门UML建模图(类图)
  • Windows 安装Docker For Desktop概要
  • 解决循环依赖报错问题
  • 代码随想录第46期 单调栈
  • 中仕公考怎么样?事业编面试不去有影响吗?
  • OMV7 树莓派 tf卡安装
  • Go语言24小时极速学习教程(五)Go语言中的SpringMVC框架——Gin
  • 【汇编】c++游戏开发
  • Android Studio | 修改镜像地址为阿里云镜像地址,启动App
  • Rocky linux8 安装php8.0
  • Ubuntu 18 EDK2 环境编译
  • C语言项⽬实践-贪吃蛇
  • 智慧安防丨以科技之力,筑起防范人贩的铜墙铁壁
  • Spring:IoC/DI加载properties文件
  • Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
  • 深挖C++赋值