![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 72
sandyznb
这个作者很懒,什么都没留下…
展开
-
Redis分布式锁
一:redis常见的用途 1 缓存 2计数器 3 排行榜 4 分布式锁 二:redis实现分布式锁 分布式锁主要有以下几个问题: 1 互斥性:多个机器不能同时获得锁,同一时刻只有一台机器占有锁 2 安全性:保证加锁和解锁都是同一台机器,不能误释放别人的锁 3 死锁:节点故障,但是一直占有锁未释放,其他节点一直加锁失败 4 容错:一个节点故障,保证其他节点可以释放和获取到锁 三:主要用到的redis命令 1:setnx key value key不存在时 赋值 然后返回1 key...原创 2021-07-14 10:18:22 · 125 阅读 · 1 评论 -
Redis 持久化
1:RDB (快照) save <seconds> <changes> N 秒内数据集至少有 M 个改动 同时满足2个条件 比如每900s至少有1个key发生变化,触发一次快照 redis会创建(fork)一个子进程来做持久化的工作,会先将数据写入一个临时文件中,等到持久化结束后,再将这个临时文件替换上次持久化好的文件。这个过程当中只有子进程来负责IO操作,主进程仍然处理客户端的请求,这么干确保了极高的性能。 默认情况下 redis将数据库快照保存名字为d..原创 2021-06-22 16:42:05 · 84 阅读 · 0 评论 -
Redis常见功能和优势
1:哨兵(sentinel)和复制(replication) 哨兵可以管理多个redis服务器,提供监控、提醒以及自动的故障转移的功能。replication 负责让一个redis服务器可以配备多个备份的服务器 redis就是利用这2个功能来保证redis的高可用的 2:事务 一次性执行多个命令,保证原子性 3:LUA脚本 在事务的基础上,如果我们需要在服务器一次性执行更复杂的操作,lua就可以用上了 4:持久化 redis会把内存中的数据写入硬盘中,在redis重启的时候加载这些数据,最大原创 2021-06-21 17:23:10 · 2359 阅读 · 0 评论 -
Redis 为什么采用单线程 为什么这么快
1:redis为什么这么快 redis是基于内存的,内存的读写速度非常快 redis是单线程的,省去了很多上下文切换的时间 redis采用了多路复用技术,可以处理并发的连接。非阻塞IO内部采用epoll,而且redis自己实现了简单的事件框架。epoll中的读、写、关闭等等都转化成了事件,绝不在IO上浪费一点时间。 2:redis为什么采用单线程 redis是基于内存的操作,cpu不是redis的瓶颈,redis的瓶颈最有可能是机器的内存和网络带宽。单线程最容易实现而且cpu又不会成为瓶颈,那么采原创 2021-06-21 17:01:28 · 264 阅读 · 0 评论 -
Redis 缓存雪崩 缓存穿透 缓存击穿
缓存雪崩 大量缓存数据在同一时间失效,导致用户直接发起大量请求到数据库,产生瓶颈 解决方案: 1:生成随机失效的缓存时间数据(随机生成数据过期时间) 2:让缓存节点分布在不同的物理节点上 3:生成不失效的缓存数据(过期时间是-1) 4:定时任务更新缓存数据(定时延长过期是假) 缓存穿透 用户请求数据,例如ID为负数,不存在缓存里,也不存在数据库里,会造成缓存穿透 解决方案: 1:无意义数据放入缓存,下一次相同请求就会命中缓存 (解决多次查询同一个key) 2:IP地址过滤 3:参数合原创 2020-11-16 10:58:09 · 211 阅读 · 0 评论 -
雪崩 击穿 穿透
缓存雪崩 大量缓存数据在同一时间失效,导致用户直接发起大量请求到数据库,产生瓶颈 解决方案: 1:生成随机失效的缓存时间数据(随机生成数据过期时间) 2:让缓存节点分布在不同的物理节点上 3:生成不失效的缓存数据(过期时间是-1) 4:定时任务更新缓存数据(定时延长过期是假) 缓存穿透 用户请求数据,例如ID为负数,不存在缓存里,也不存在数据库里,会造成缓存穿透 解决方案: 1:无意义数据放入缓存,下一次相同请求就会命中缓存 (解决多次查询同一个key) 2:IP地址过滤 3:参数合原创 2020-11-16 10:56:22 · 83 阅读 · 0 评论