【java面经】Redis速记

目录

基本概念

string

hash

list

set

zset

常见问题及解决

缓存穿透

缓存击穿

缓存雪崩

Redis内存管理策略

noeviction

allkeys-lru

allkeys-random

volatile-random

volatile-ttl

Redis持久化机制

RDB快照

AOF追加文件

Redis多线程特性

Redis应用场景

缓存

消息队列

分布式锁

排行榜

实时系统

基本概念

string

基本的数据类型,存储任何类型数据包括图片,序列化对象等等,一个键最大存512MB

hash

键值对集合,string的field和value的映射表

list

字符串列表,可以头或者尾插入元素

set

string类型的无序集合,哈希表实现,O(1)

zset

类似于set,每个元素关联double类型分数,用于从小到大排序元素,成员唯一,分数可重复。

常见问题及解决

缓存穿透

缓存和数据库都没有数据,用户频繁发起请求导致数据库压力过大

解决:布隆过滤器提前过滤不存在的数据,或者对查询不存在的数据统一返回处理

缓存击穿

缓存无,数据库有数据(缓存到期)的时候,并发请求数据库查询同一数据,数据库压力过大

解决:加锁机制,延时双删策略

缓存雪崩

缓存大量数据同时过期,查询数据量巨大,数据库压力过大。

解决:优化缓存过期时间,使其分布更均匀,或者使用缓存预热机制提前加载热点数据

Redis内存管理策略

noeviction

不驱逐任何键,新写入操作就报错

allkeys-lru

移除最近少使用的键

allkeys-random

碎金移除某个键

volatile-random

设置过期时间的键中,随机删除某个键

volatile-ttl

设置过期时间的键中,先删最早过期的

Redis持久化机制

RDB快照

指定时间拍内存数据快照,保存在dump.rdb中

重启时,载入RDB文件还原数据库状态

缺点:有丢失RDB进而丢失数据的风险

AOF追加文件

每次redis执行改变数据库的命令时,该命令都会被追加到AOF文件末尾

重启时,redis通过重新执行AOF文件中的命令来重构数据集

更耐久的机制

Redis多线程特性

redis执行命令是单线程的,多线程主要用于处理网络数据的读写的协议解析,以优化整体性能。

优点:保证了数据处理的一致性,提高了系统的吞吐量和相应速度。

Redis应用场景

缓存

大幅减轻数据库压力,提高相应速度

消息队列

list数据结构实现了简单的消息队列,进行任务的异步处理

分布式锁

结合redis命令特性和事务,实现分布式环境下的锁机制,确保数据一致性

排行榜

利用Zset能够实现各类排行榜的功能(商品销量榜,游戏排行榜等等)

实时系统

由于高并发和低延迟的特性,redis可用于实时数据分析,展示系统中。

相关推荐
SelectDB技术团队10 小时前
ClickHouse 支持存算分离吗?Doris 社区版原生存算分离怎么落地
数据库·clickhouse·云原生·开源·apache doris·技术选型·存算分层
qq_3646821510 小时前
录音APP怎么切换语言?多语言版本如何使用
java·服务器·前端
DBA_G10 小时前
南大通用GBase 8a数据库可视化灾备解决工具GVR
数据库
Wang's Blog10 小时前
Java 项目实战: 交友项目 - 用户体系集成:根据环信id查询用户详情
java·lua·交友
摇滚侠10 小时前
《On Java 中文版 基础卷》阅读笔记 复用 13
java·笔记·python
l1t10 小时前
DeepSeek总结的PostgreSQL 中的 SQL 与 PL/pgSQL:计划缓存
sql·缓存·postgresql
2601_9689007710 小时前
玻璃深加工的工艺窗口:4 道工序的温度与时间参数边界
android·java·javascript
薛之谦_10 小时前
用 Java 实现阿里云式 IAM 子用户管理:架构设计与表结构详解
java·python·阿里云
JJJennie77710 小时前
MAI Gateway实战部署:大模型网关部署方案?从0到1上手指南
数据库·人工智能·gateway·ai网关
吹什么轩10 小时前
MySQL 内连接与外连接:从笛卡尔积到 LEFT JOIN,一篇讲透
数据库·mysql