- 博客(24)
- 收藏
- 关注
原创 Redis八股文目录
Redis缓存穿透-优快云博客Redis缓存击穿-优快云博客Redis缓存雪崩(主从复制、哨兵模式(脑裂)、分片集群)-优快云博客Redis双写一致性-优快云博客Redis持久化-优快云博客Redis数据过期、淘汰策略-优快云博客分布式锁(Redission)-优快云博客
2024-06-22 21:14:34
444
原创 分布式锁(Redission)
(比如在8080的线程1获取完库存后,8081的线程1也进行了获取,此时8080的线程1对内存进行了扣除,按理来说已经没有库存了,但是8081的线程1获取的时候还是有的,还会继续扣除,这样就会出现问题)在某个线程加锁的同时,会生成一个新的线程来启动watch dog监控,如果加锁线程没有结束watch dog会每隔(releaseTime/3)的时间做一次续期(releaseTime默认30s),如果线程结束了,我们可以发送释放锁的指令来停止watch dog续期锁。那么分布式锁怎么使用呢?
2024-06-22 14:34:41
765
原创 Redis数据过期、淘汰策略
每隔一段时间,我们就对一些key进行检查,删除里面过期的key(从一定数量的数据库中取出一定数量的随机key进行检查,并删除其中的过期key)。设置该key过期时间后,我们不去管它,当需要该key时,我们在检查其是否过期,如果过期,我们就删掉它,反之返回该key。这种方式对cpu友好(只在用的时候判断要不要删除不用一直判断),对内存不友好(过期的key一直存在内存中)两种LRU淘汰:全体keyLRU淘汰、设置了存活时间的keyLRU淘汰。两种随机淘汰:全体key随机淘汰、设置了存活时间的key随机淘汰。
2024-06-21 23:41:11
268
原创 Redis持久化
当主进程执行读操作的时候一切照常,但是一旦主进程要进行写操作,主进程就要把自己需要操作的数据(数据B)拷贝一份再进行写操作,并且在子进程完成任务之前,主进程想要对数据B进行读操作,就只会读自己复制出来的数据副本,而不会去读原本的数据B。简单来说就是把内存中的所有数据都记录到磁盘中。生成RDB的方式有两种,一种是执行命令save(使用主进程生成RDB,这种方式会造成拥堵),另一种是bgsave(使用子进程生成RDB,一般使用这种方式),下面我们来讲一下使用bgsave生成RDB的流程和RDB的执行原理。
2024-06-21 18:55:33
464
原创 Redis双写一致性
我们这里讨论一种特殊情况,就是缓存中的数据过期了,此时 线程1 去查缓存查不到,就会去访问数据库(此时数据库是旧数据),突然 线程2 横插一脚,它来执行了一个更新数据库的操作,把数据库的数据更新为了新数据,并去删除缓存(虽然缓存中没有数据,不过不影响),线程2 执行完毕后 线程1 继续执行,把它访问数据库(旧数据)的数据更新到缓存中,这样就出现了缓存是旧数据而数据库是新数据的情况。两种异步通知的方法当然都是存在短暂的延迟的,不能保证强一致性,都是最终数据都会变成一致的,我们可以按需选择自己的方法。
2024-06-20 20:01:16
591
原创 Redis缓存雪崩(主从复制、哨兵模式(脑裂)、分片集群)
主节点发送repl_baklog中的命令(这里就用到刚刚说的重要的变量offest,在第一次同步时,步骤4发送了第一次offest,此后步骤10只需要根据offest,就可以判断需要发送哪些数据,比如说第一次步骤4发送的offest为5,而在子节点生成数据期间,repl_baklog记录的数据为7条,此时主节点的offest就变成了 5+7=12,那么主节点就会发送 12-5=7 条最新的命令给子节点以完成同步)最后是根据slave节点的运行id,每个slave节点在运行时都有一个id,越小优先级越高。
2024-06-20 14:04:53
1523
原创 Redis缓存穿透
误判:如下图,id为1的数据将下标为1、3、7的数组数据改为了1,id为2的数据将下标为9、12、14的数组数据改为了1,这时候我们查询id为3的数据,通过三个哈希函数计算出的三个哈希值为3、9、12,数组中明明没有存过这个数据,但是这几个哈希值对应的下标在数组中数据为1,过滤器机会误判数组中存在这个数据。* 原因就是fpp越小,占用的空间越大,同时使用的哈希函数越多,出现重复的可能性越小。* fpp:期望的误判率,期望的误判率越低,布隆过滤器计算时间越长。
2024-06-19 21:21:58
943
原创 关于MybatisX无法生成实体类的问题
前些天在更新了最新版本的MybatisX后猛然发现好像不能生成实体类了,在网上苦苦寻找解决方法后发现要下载回之前的版本(1.5.4),安装完成后发现确实可以生成实体类了,但是idea又总是报MybatisX的错误,忍无可忍最后下回了最新版本(1.6.3)。研究一晚上后发现,其实只要勾选了这个Model就可以生成实体类了。我看网上好像没有这种方法,特地拿出来分享。
2024-06-15 22:40:07
1219
3
原创 从0开始的Ubuntu分布式配置(林子雨)
本文依照厦门大学林子雨老师的大数据教程进行安装和配置,完善了一些细节和解决了一些可能出现的错误。教程网址如下https://dblab.xmu.edu.cn/blog/4189/
2023-09-28 22:35:05
870
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人