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

【java面经thinking】二

目录

redis了解

使用原因

应用场景

数据类型

redis事务

数据持久化

RDB(快照):

AOF(即时更新):

选择方式:

redis快速的原因

redis单线程

单机瓶颈

经典3问

参考博客

redis了解

缓存中间件

使用原因

缓解高并发、提升高可用。因为redis是基于内存的,读写操作要比MySQL的IO操作快得多的多。

应用场景
  • 不变的用户信息:请求从缓存拿,再从数据库
  • 计数器:redis的incr命令实现原子性的递增,例如限制一个接口的请求频率等
  • 热点词,验证码等业务
数据类型

基于键值的方式

String,Hash,List,Set,SortSet

SortSet可以实现排行榜

redis事务

一组命令的集合,相当于一个队列。

所有命令都会被序列化,顺序执行,不会被中断(一致性,排他性,顺序性)。

不存原子性:而Mysql的事务有原子性(全成功或者全失败)。

不存隔离性:不存在脏读,幻读不可重读的现象

数据持久化
RDB(快照):

周期性备份,数据快照形式,fork,cow。fork即创建子进程做数据同步,cow即copy on write ,父子进程数据共享数据段,父进程依旧提供读写服务。

优点: 快照恢复比AOF要快。

缺点:备份大的项目可能停顿1s,对秒杀业务不友好。丢失一个周期时间的数据。

AOF(即时更新):

即时性备份:对每条数据的操作指令作为日志,然后追加到日志文件中,因为是追加的方式,所以不需要去寻址,比较快速。

优点:数据比较完整,写入迅速,可读性强。

缺点:恢复缓慢,每次写入redis的qps都备份较缓慢。

选择方式:

二者兼用。先用RDB快速恢复数据,再使用AOF补全。

redis快速的原因

基于内存:KV数据库,读取O(1)

单线程的:无需关注线程上下文与竞争条件,没有线程切换而产生的cpu消耗

数据结构简单:各自分段间没有关联

多路复用I/O模型,非阻塞IO,多路复用指的是多个请求复用一个线程,当多个连接都有请求时,复用器会轮询所有请求,挨个处理。

qps:每秒查询次数

redis单线程

够快了

单机瓶颈

采用redis-cluster集群来横向拓展,主从同步,读写分离,且可以有多个主节点,每个主节点又可以挂多个从节点。

经典3问

缓存穿透、缓存击穿与雪崩

参考博客

面试干货7——刁钻面试官:关于redis,你都了解什么?_群里有人试过redis吗-CSDN博客


http://www.kler.cn/news/356037.html

相关文章:

  • Android -- [SelfView] 炫酷文字圆盘时钟
  • [渗透测试] XSS跨站点脚本攻击 零基础入门教程
  • 单细胞空间转录组分析流程学习python版(三)
  • 你是否真的弄懂了 OAuth 2.0?
  • 某MDM主数据管理系统与微软Dynamic CRM系统(国内节点)集成案例
  • 深入理解WPF中的数据绑定:完整指南
  • 大厂面试真题-说说Redis的cluster模式的故障转移和自动恢复
  • 自由学习记录(10)
  • ChatGPT写作助手:论文写作必备提示词一览
  • Poetry 介绍和安装指南 - Ubuntu 24
  • Go语言基础学习(Go安装配置、基础语法)·
  • 华强北耳机最强攻略。华强北Airpods不踩坑,指南在这
  • 【Linux】gcc编译器的使用
  • HarmonyOS 通过用户首选项实现数据持久化
  • 深拷贝与浅拷贝区别
  • Mac M3安装VMWare Fusion
  • 责任链模式下,解决开闭原则问题实践
  • 重写QObjiet虚函数timerEvent()启动定时器
  • ssm基于SSM框架的成绩管理系统的设计与实现+vue
  • 矩阵相关算法