随笔分类 -  Redis

摘要:如何保证 Redis 中的数据都是热点数据 提供一种简单实现缓存失效的思路: LRU(最近少用的淘汰) 即redis的缓存每命中一次,就给命中的缓存增加一定ttl(过期时间)(根据具体情况来设定, 比如10分钟). 一段时间后, 热数据的ttl都会较大, 不会自动失效, 而冷数据基本上过了设定的tt 阅读全文
posted @ 2023-06-08 15:25 上好佳28 阅读(12) 评论(0) 推荐(0) 编辑
摘要:多客户端同时并发写一个key,可能本来应该先到的数据后到了,导致数据版本错了。或者是多客户端同时获取一个key,修改值之后再写回去,只要顺序错了,数据就错了 首先使用分布式锁,确保同一时间,只能有一个系统实例在操作某个key 然后修改key的值时,要先判断这值的时间戳是否比缓存里的值的时间戳更靠后, 阅读全文
posted @ 2023-06-08 15:24 上好佳28 阅读(10) 评论(0) 推荐(0) 编辑
摘要:缓存穿透 缓存穿透是指查询一个缓存和数据库中都不存在的数据,客户端不断发起请求,导致数据库压力过大 解决方法 1、采用布隆过滤器,将所有可能存在的数据,哈希到一个很大的 bitmap 中, 一个一定不存在的数据会被 bitmap 拦截调,从而避免了对数据库的查询压力。 2、如果查询的数据为空,直接将 阅读全文
posted @ 2023-06-08 15:23 上好佳28 阅读(15) 评论(0) 推荐(0) 编辑
摘要:横向扩容,保证哈希一致性 一致性哈希将整个哈希值空间组织成一个虚拟的圆环,如假设某哈希函数H的值空间为0-2^32-1(即哈希值是一个32位无符号整形) 下一步将各个服务器使用Hash进行一个哈希,具体可以选择服务器的ip或主机名作为关键字进行哈希,这样每台机器就能确定其在哈希环上的位置 接下来使用 阅读全文
posted @ 2023-06-08 15:22 上好佳28 阅读(63) 评论(0) 推荐(0) 编辑
摘要:读操作:主库、从库都可以接收; 写操作:首先到主库执行,然后,主库将写操作同步给从库。 主从第一次同步 第一阶段,主从库间建立连接、协商同步的过程,主要是为全量复制做准备。从库和主库建立起连接,主库确认回复后,就可以开始同步了。具体来说,从库给主库发送 psync 命令,psync 命令包含了主库的 阅读全文
posted @ 2023-06-08 15:21 上好佳28 阅读(11) 评论(0) 推荐(0) 编辑
摘要:哨兵其实是一个运行在特殊模式下的 Redis 进程,所以它也是一个节点。从“哨兵”这个名字也可以看得出来,它相当于是“观察者节点”,观察的对象是主从节点 哨兵节点主要负责三件事情:监控、选主、通知 监控 哨兵会每隔 1 秒给所有主从节点发送 PING 命令,当主从节点收到 PING 命令后,会发送一 阅读全文
posted @ 2023-06-08 15:20 上好佳28 阅读(11) 评论(0) 推荐(0) 编辑
摘要:删除策略 定时删除:在设置键的过期时间的同时,创建一个定时器 timer). 让定时器在键的过期时间来临时,立即执行对键的删除操作 定期删除:每隔一段时间程序就对数据库进行一次检查,删除里面的过期键。 惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除 阅读全文
posted @ 2023-06-08 15:18 上好佳28 阅读(34) 评论(0) 推荐(0) 编辑
摘要:单机单节点模式使用 AOF 和 RDB 结合的方式 RDB 做镜像全量持久化,AOF 做增量持久化。因为 RDB 会耗费较长时间,不够实时,在停机的时候会导致大量丢失数据,所以需要 AOF 来配合使用。 Redis 集群模式 1、master 节点持久化 2、Redis断点续传:主从复制过程中,如果 阅读全文
posted @ 2023-06-08 15:16 上好佳28 阅读(174) 评论(0) 推荐(0) 编辑
摘要:Redis缓冲区有两个应用场景: 在客户端和服务器端之间进行通信时,用来暂存客户端发送的命令数据,或者是服务器端返回给客户端的数据结果; 主从节点间进行数据同步时,用来暂存主节点接收的写命令和数据 客户端缓冲区 是为了解决客户端和服务端请求和处理速度不匹配问题的,它又分为输入和输出缓冲区。 输入缓冲 阅读全文
posted @ 2023-06-08 15:15 上好佳28 阅读(51) 评论(0) 推荐(0) 编辑
摘要:从性能上来说,内存占用过高会引起Reids响应变慢 从高可用上来说,内存过大可能会会引起部分数据丢失,故障恢复变慢 Redis内存消耗主要在于其主进程消耗和子进程消耗。而主进程消耗又主要包括自身内存、对象内存、缓冲区内存、内存碎片五个方面 1、自身内存 指Redis进程自身所占用的内存,这部分内存通 阅读全文
posted @ 2023-06-08 15:14 上好佳28 阅读(33) 评论(0) 推荐(0) 编辑
摘要:AOF 日志,每次追加,文件量大,能设置每秒/没次,那么异常情况下丢失的数据少,文件过大时会重写,即采用最简短的命令描述数据库 RDB 快照式,快照是一次全量备份,异常情况下丢失的数据量较大 RDB文件的创建可以手动触发,也可以自动触发 服务器在载入RDB文件期间,会一直处于阻塞状态,直到载入工作完 阅读全文
posted @ 2023-06-08 15:14 上好佳28 阅读(5) 评论(0) 推荐(0) 编辑
摘要:简单动态字符串SDS 杜绝缓冲区溢出(SDS会先扩展再修改) 减少字符串操作中的内存重分配次数(预分配和惰性清除) 二进制安全(二进制处理,使用len属性而非空格来判断字符串是否结束) 链表 指针相连,空间不连续,天然支持扩容,插入删除操作高效(时间复杂度为O(1)),但缺点是随机访问低效(时间复杂 阅读全文
posted @ 2023-06-08 15:11 上好佳28 编辑
摘要:字符串对象(String) 字符串对象底层是简单动态字符串SDS 使用场景: 1、作为缓存 缓存一些热点数据。一般在读取数据的时候会先从Redis中读取,如果Redis中没有,再从数据库中读取,从而降低后端的压力。(需要注意缓存穿透、雪崩以及缓存更新等问题......) 2、计数器\限速器\分布式系 阅读全文
posted @ 2023-06-08 15:11 上好佳28 阅读(64) 评论(0) 推荐(0) 编辑
摘要:速度快,因为数据存在内存中,类似于 HashMap,HashMap 的优势就是查找和操作的时间复杂度都是 O(1) 支持丰富数据类型,支持 string,list,set,sorted set,hash 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行 丰富的特性: 阅读全文
posted @ 2023-06-08 15:10 上好佳28 阅读(10) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示