Redis
2024-11-18 17:30:33 0 举报
AI智能生成
Redis相关知识点
作者其他创作
大纲/内容
数据结构
String
字符串,最基本的数据类型,字符串类型的值最大能存储 512MB
常用操作包括 GET、SET、INCR(自增)、DECR(自减)等
List
有序的字符串列表,元素可以重复
常用操作包括 LPUSH(在列表左边插入元素)、RPUSH(在列表右边插入元素)、LPOP(移除并返回列表的第一个元素)、RPOP(移除并返回列表的最后一个元素)等
Set
无序的字符串集合,元素是唯一的,不会重复
常用操作包括 SADD(向集合添加一个或多个成员)、SREM(移除集合中一个或多个成员)、SMEMBERS(返回集合中的所有成员)等
ZSet
类似于集合,但每个元素都会关联一个分数(score),元素按分数从小到大排序,成员是唯一的,但分数可以重复。
常用操作包括 ZADD(向有序集合添加一个或多个成员,或者更新现有成员的分数)、ZRANGE(按分数从小到大返回有序集合中指定区间内的成员)、ZREM(移除有序集合中的一个或多个成员)等。
Hash
键值对的集合,类似于 Python 中的字典或 Java 中的 HashMap;特别适合存储对象,对象的每个字段可以作为一个哈希的键值对来存储
常用操作包括 HSET(为哈希表中的一个字段设置值)、HGET(获取存储在哈希表中指定字段的值)、HDEL(删除哈希表中的一个或多个字段)等
Bitmap
位图可以用来存储和处理位级别的数据,如用户签到记录、布隆过滤器等。不是一种独立的数据结构,而是基于字符串实现的位存储方式。
HyperLogLog
是一种用于基数估计的算法,能够使用极少的内存来估算一个数据集的基数(即不同元素的数量
Geospatial
地理空间索引,Redis 提供了对地理空间数据的支持,允许存储地理位置(经纬度)并计算两点之间的距离、查找附近的点等。
持久性
RDB
按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。优点包括只有一个文件、容灾性好、性能最大化(使用单独子进程进行持久化,主进程不会进行任何IO操作)。缺点是在数据集较大时,启动效率可能比AOF低。
AOF
以日志的形式记录每个写操作,当Redis服务器重启时,会重新执行这些写操作来恢复数据。优点是能更好地保证数据的完整性。缺点是相对于RDB,AOF文件通常更大,且恢复速度可能较慢。
RDB+AOF
Redis 4.0 版本提供了一套基于 AOF-RDB 的混合持久化机制,保留了两种持久化机制的优点。这样重写的 AOF 文件由两部份组成,一部分是 RDB 格式的头部数据,另一部分是 AOF 格式的尾部指令。
删除策略
定时删除
在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作。
Redis出于性能考虑,通常不直接实现定时删除策略
定期删除
Redis每隔一段时间就对数据库进行一次检查,删除里面过期的键。删除的数量以及间隔周期由算法决定。
惰性删除
Redis不会主动删除过期键,而是在每次从键空间获取键时,检查取得的键是否过期。如果过期,则删除该键;否则,返回该键。
默认策略
Redis默认采用定期删除和惰性删除相结合的策略来处理过期键
淘汰机制
noeviction
volatile-lru
volatile-lfu
volatile-random
volatile-ttl
allkeys-lru
allkeys-lfu
allkeys-random
策略规则
1. 如果数据呈现幂律分布,也就是一部分数据访问频率高,一部分数据访问频率低,则使用allkeys-lru;
2. 如果数据呈现平等分布,也就是所有的数据访问频率都相同,则使用allkeys-random。
常用操作
缓存
Redis可以将常用的数据存储在内存中,以提高数据访问速度,减轻后端数据库的压力。这是Redis最常见的用途之一,通过缓存机制,可以显著提升应用程序的性能。
会话存储
Redis可以用来存储用户会话信息,实现分布式会话管理。
分布式锁
Redis提供了分布式锁的实现方式,可以用来控制并发访问,保证多个客户端之间的数据同步。这对于分布式系统中的资源同步和访问控制非常重要。
SETNX
Redission分布式锁
消息队列
Redis支持发布/订阅模式,可以用作消息队列系统,实现异步通信。这对于事件驱动架构和分布式系统非常有用,可以实现任务队列和异步消息处理等功能。
条件允许建议使用MQ
实时分析
Redis支持多种数据结构,可以用于实时数据分析和统计。例如,Redis的有序集合可以用于实现实时排名榜单。
计数器
Redis可以用于实现访问计数器、投票计数器等功能。通过存储和递增计数器值,Redis可以方便地跟踪网站访问量、用户交互等应用程序指标。
数据一致性
延时双删
延时双删是指在删除或更新某个数据时,首先删除缓存中的数据,然后更新或删除数据库中的数据,并在一段时间后(通常是几百毫秒)再次删除缓存中的数据
MQ异步双删
分支主题
binlog订阅
分支主题
缓存问题
缓存穿透
缓存穿透说简单点就是大量请求的 key 根本不存在于缓存中,导致请求直接到了数据库上,根本没有经过缓存这一层。
解决方案
缓存击穿
也叫热点Key问题,就是缓存在某个时间点过期的时候,恰好在这个时间点对这个Key有大量的并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。
解决方案
缓存雪崩
缓存击穿指缓存在同一时间大面积的失效,后面的请求都直接落到了数据库上,造成数据库短时间内承受大量请求
解决方案
0 条评论
下一页