![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
小卒曹阿瞒
这个作者很懒,什么都没留下…
展开
-
redis rdb文件分析工具
https://github.com/sripathikrishnan/redis-rdb-tools https://github.com/xueqiu/rdr 一个go实现的,一个python实现的,一个快,一个功能强大,各取所需原创 2021-09-17 11:18:06 · 185 阅读 · 0 评论 -
redis持久化
RDB 1.RDB文件用于保存和还原redis服务器所有数据库中的所有键值对数据 2.SAVE命令由服务器进程直接执行保存操作,所以该命令会阻塞服务器 3.BGSAVE命令由子进程执行保存操作,所以该命令不会阻塞服务器 4.服务器状态中会保存所有用save选项设置的保存条件,当任意一个保存条件被满足时,服务器会自动执行BGSAVE 5.RDB文件是一个经过压缩的二进制文件,由多个部分组...翻译 2019-04-01 23:49:03 · 76 阅读 · 0 评论 -
redis事件调度和执行规则
1.aeApiPoll函数的最大阻塞时间是由到达时间最接近当前时间的时间事件决定,这个方法既可以避免服务器对时间事件进行频繁的轮询(忙等待),也可以确保aeApiPoll函数不会阻塞过长时间。 2.因为文件事件是随机出现的,如果等待并处理完一次文件事件之后,仍未有任何时间事件到达,那么服务器将再次等待并处理文件事件。随着文件事件的不断执行,时间会逐渐向时间事件所设置的到达时间逼近,并最终来到到达...翻译 2019-04-02 00:14:55 · 812 阅读 · 0 评论 -
使用redis实现分布式锁
可靠性 1.互斥性:在任意时刻,只有一个客户端能持有锁 2.不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁 3.具有容错性:只要大部分的redis节点正常运行,客户端就可以加锁和解锁 4.解铃还须系铃人:加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了 加锁代码 使用SET key value [EX seconds] [PX...原创 2019-04-17 09:25:36 · 95 阅读 · 0 评论 -
缓存中的穿透,并发及雪崩
背景 使用缓存的时候,最常见的场景莫过于查询缓存是否存在,如果不存在就去db取,然后再设置本地缓存, 如果缓存里就直接返回。但这种做法在高并发的情况下会出现缓存穿透,缓存并发,缓存雪崩问题。 伪代码如下: if val := cache.get("key"); val == nil { val = db.read("key"); cache.set...原创 2019-06-29 19:58:15 · 99 阅读 · 0 评论