随笔分类 -  Redis 设计与实现

摘要:推荐方案 采用更新前后双删除缓存策略 public void write(String key,Object data){ redis.del(key); db.update(data); Thread.sleep(1000); redis.del(key); } 先淘汰缓存 再写数据库 休眠1秒, 阅读全文
posted @ 2022-01-10 14:41 Tracydzf 阅读(179) 评论(0) 推荐(0) 编辑
摘要:首先说一下Redis Sentinel是怎么工作的?重点描述一下故障转移的过程 1)每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令。 2)如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 阅读全文
posted @ 2021-12-08 17:31 Tracydzf 阅读(176) 评论(0) 推荐(1) 编辑
摘要:你刚才说主从复制,那你能具体聊聊主从复制的原理吗? 在redis主从架构中,master负责接收写请求,写操作成功后返回客户端OK。 然后后将数据异步的方式发送给多个slaver进行数据同步,不过从redis 2.8开始,slave node会周期性地确认自己每次复制的数据量。 当启动一个slave 阅读全文
posted @ 2021-12-03 17:19 Tracydzf 阅读(29) 评论(0) 推荐(0) 编辑
摘要:一、Hash算法引入--分布式缓存 有一个电商平台,需要使用Redis存储商品的图片资源,key为图片名称,value为图片所在服务器的路径。利用随机分配的规则进行分库。总量3000w,以每台服务器存500w的数量,部署12台缓存服务器,并且进行主从复制,架构图如下图: 1.Hash算法优化 目的是 阅读全文
posted @ 2021-12-03 15:37 Tracydzf 阅读(531) 评论(0) 推荐(0) 编辑
摘要:第一,看看你到底有没有全面的了解Redis有哪些功能,一般怎么来用,什么场景用什么数据类型,就怕你只会最简单的kv操作 第二,看看你在实际项目里都怎么玩儿过Redis,经验是否丰富 要是你回答的不好,没说出几种数据类型,也没说什么场景,你完了,面试官对你印象肯定不好,觉得你平时就是做个简单的set和 阅读全文
posted @ 2021-12-03 11:27 Tracydzf 阅读(44) 评论(0) 推荐(0) 编辑
摘要:背景 最近,有不少用户反映登录我们的APP后,进入首页展示用户数据时要很久很久才能展示出来。刚开始还没在意,以为是用户自己的网络慢导致的,后来有好几个用户都反映了此问题,这不得不引起我们的重视了。 后来经过我们排查日志发现一个现象,提出该问题的用户都是基础数据比较多的,因为我们是金融软件,所以当用户 阅读全文
posted @ 2021-12-02 11:18 Tracydzf 阅读(36) 评论(0) 推荐(0) 编辑
摘要:使用Redis难免会遇到Redis缓存穿透,缓存击穿,缓存雪崩,热点Key的问题。有些同学可能只是会用Redis来存取,基本都是用项目里封装的工具类来操作。但是作为开发,我们使用Redis时可能会遇到上述问题,可能你还不知道这几个名词是什么意思,那么现在就让我们一起来探讨下吧。 首先我们使用Redi 阅读全文
posted @ 2021-12-01 18:42 Tracydzf 阅读(90) 评论(0) 推荐(0) 编辑
摘要:随着互联网技术的不断发展,用户量的不断增加,越来越多的业务场景需要用到分布式系统。而在分布式系统中访问共享资源就需要一种互斥机制,来防止彼此之间的互相干扰,以保证一致性,这个时候就需要使用分布式锁。 分布式锁的特点 互斥性。在任意时刻,只有一个客户端能持有锁 锁超时。即使一个客户端持有锁的期间崩溃而 阅读全文
posted @ 2021-12-01 17:33 Tracydzf 阅读(819) 评论(0) 推荐(0) 编辑
摘要:滑动窗口算法 指定时间T内,只允许发生N次。我们可以将这个指定时间T,看成一个滑动时间窗口(定宽)。 我们采用Redis的zset基本数据类型的score来圈出这个滑动时间窗口。在实际操作zset的过程中,我们只需要保留在这个滑动时间窗口以内的数据,其他的数据不处理即可。 每个用户的行为采用一个zs 阅读全文
posted @ 2021-11-15 19:38 Tracydzf 阅读(3860) 评论(0) 推荐(0) 编辑
摘要:首先我们来看一个常见 的简单的限流策略。系统要限定用户的某个行为在指定的时间里只能允许发生 N 次,如何使用 Redis 的数据结构来实现这个限流的功能? # 指定用户 user_id 的某个行为 action_key 在特定的时间内 period 只允许发生一定的次数 max_count def 阅读全文
posted @ 2021-11-15 19:04 Tracydzf 阅读(162) 评论(0) 推荐(0) 编辑
摘要:布隆过滤器是什么? 布隆过滤器可以理解为一个不怎么精确的 set 结构,当你使用它的 contains 方法判断某个对象是否存在时,它可能会误判。 但是布隆过滤器也不是特别不精确,只要参数设置的合理,它的精确度可以控制的相对足够精确,只会有小小的误判概率。 当布隆过滤器说某个值存在时,这个值可能不存 阅读全文
posted @ 2021-11-15 18:10 Tracydzf 阅读(88) 评论(0) 推荐(0) 编辑
摘要:第一种方法就是最传统的多进程并发模型 (每进来一个新的I/O流会分配一个新的进程管理。)第二种方法就是I/O多路复用 (单个线程,通过记录跟踪每个I/O流(sock)的状态,来同时管理多个I/O流 。) 其实“I/O多路复用”这个坑爹翻译可能是这个概念在中文里面如此难理解的原因。所谓的I/O多路复用 阅读全文
posted @ 2021-06-19 16:09 Tracydzf 阅读(290) 评论(0) 推荐(0) 编辑
摘要:Redis简单动态字符串 Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串), 而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型, 并将 SDS 用作 Redis 的默认字符串表示。 在 Redis 阅读全文
posted @ 2020-12-21 14:25 Tracydzf 阅读(291) 评论(0) 推荐(0) 编辑

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