月度归档: 2022年11月

2 篇文章

thumbnail
Go 进阶训练营 – 评论系统架构设计四:可用性设计
Singleflight 对于热门的主题,如果存在缓存穿透的情况,会导致大量的同进程、跨进程的数据回源到存储层,可能会引起存储过载的情况,如何只交给同进程内,一个人去做加载存储? 使用归并回源的思路:https://pkg.go.dev/golang.org/x/sync/singleflight,同一时间只有一个协程去拿数据,拿到数据前,相同任务…
thumbnail
跳表:为什么Redis一定要用跳表来实现有序集合?
前言 时间复杂度O(logn)的二分查找很高效,但是依赖数组随机访问的特性,如果是链表,如何做到O(logn)? 跳表 原始链表查找时,需要遍历链表,时间复杂度就是O(n),光靠原始链表是不行的。 我们可以增加辅助链表,达到索引的作用,使用起来类似二叉搜索树。 查找时,从上往下,一层一层的查找,类似二叉搜索树。索引层可以继续增加,效率会得到提升。 …