【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可用于实时数据分析,展示系统中。

相关推荐
飞滕人生TYF6 分钟前
java Queue 详解
java·队列
chnming19878 分钟前
STL关联式容器之map
开发语言·c++
进击的六角龙9 分钟前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python
檀越剑指大厂9 分钟前
【Python系列】浅析 Python 中的字典更新与应用场景
开发语言·python
湫ccc17 分钟前
Python简介以及解释器安装(保姆级教学)
开发语言·python
程序伍六七21 分钟前
day16
开发语言·c++
Yz987624 分钟前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发
wkj00125 分钟前
php操作redis
开发语言·redis·php
武子康27 分钟前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs
武子康29 分钟前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql