redis
得一人终老
充实自己
展开
-
redis数据结构
字符串:简单的数据存储哈希表:存储key-value,更适合存储对象列表:命令的租户,栈、队列集合:和列表类似,但元素不能重复,无序有序集合:原创 2021-11-21 13:06:09 · 229 阅读 · 0 评论 -
redis分布式锁实现
setnx+setex:存在设置超时时间失败的情况,导致死锁set(key,value,nx,px):将setnx+setex变成原子操作问题:任务超时,锁自动释放,导致并发问题。使用redisson解决(看门狗监听,自动续期)加锁和释放锁不是同一个线程。在value中存入uuid(唯一标识),删除锁时判断该标识(使用lua脚本保证原子操作)不可重入,使用redisson解决(实现机制类似AQS,计数)异步复制可能造成锁丢失,使用redLock解决lua脚本的示例--[原创 2021-11-21 13:05:36 · 277 阅读 · 0 评论 -
缓存过期策略
定时过期惰性过期原创 2021-11-21 13:03:21 · 296 阅读 · 0 评论 -
缓存淘汰策略
先进先出FIFO(First In First Out)最近最少使用LRU(Least Recently Used)最不常使用LFU(Least Frequently Used)使用次数最少的被淘汰原创 2021-11-21 13:02:49 · 329 阅读 · 0 评论 -
redis单线程为什么这么快
redis是基于内存操作的,不会与磁盘进行IO的交互redis采用IO多路复用机制单线程避免了多线程的频繁上下文切换带来的性能问题原创 2021-11-21 13:02:16 · 459 阅读 · 0 评论 -
redis的持久化机制
RDB:Redis Database将某一时刻的内存快照,以二进制的方式写入磁盘手动触发1、save命令,使redis处于阻塞状态,直到RDB持久化完成2、bgsave命令,fork出一个子进程执行持久化自动触发1、save m n:在m秒,如果有n个键发生变化,则自动触发持久化,通过bgsave执行2、flushall:清空所有redis数据库,flushdb清空当期那所在库的数据3、主从同步:全量同步时会自动触发bgsave命令,生成rdb发送给从节点AOF:Append Only原创 2021-11-21 13:01:40 · 591 阅读 · 0 评论 -
redis限流方式
博文https://mp.weixin.qq.com/s/F6xW_RdrWmeJcLwD5wDWUw限流方式基于Redis的setnx的操作基于Redis的数据结构zset基于Redis的令牌桶算法原创 2021-11-21 13:01:09 · 333 阅读 · 0 评论 -
redis缓存雪崩、击穿、穿透
redis缓存雪崩、击穿、穿透1、缓存雪崩产生原因:缓存雪崩是指在我们设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重雪崩。解决方式:缓存失效时的雪崩效应对底层系统的冲击非常可怕。大多数系统设计者考虑用加锁或者队列的方式保证缓存的单线 程(进程)写,从而避免失效时大量的并发请求落到底层存储系统上。这里分享一个简单方案就时讲缓存失效时间分散开,比如我们可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低原创 2021-11-21 12:59:07 · 101 阅读 · 0 评论