Redis
Fisher3652
这个作者很懒,什么都没留下…
展开
-
Redis分布式锁在分布式场景下的问题及解决方法
目录1. 死锁问题2. 锁续命问题3. 主从锁失效的问题1. 死锁问题场景:当用 redis 做分布式锁时,当 A 用户竞争锁成功,A 用户所在的主机挂了,这时候还没有来得及释放锁,那么其他用户去用 setnx 指令去竞争锁时发现 redis 有这个锁的 key,所以就导致其他用户永远都竞争不成功。解决方案: 当用户加锁成功时给锁设置一个跟业务执行时间匹配的锁失效时间, 这样就算锁没有释放过一段时间锁也会实现,其他用户就可以竞争到锁了(这里在设置失效时间的操作,要和 setnx 指令一起执行,不原创 2020-10-13 17:33:20 · 2885 阅读 · 0 评论 -
分布式缓存
缓存1. 高并发首选策略2. 重要指标2.1 缓存命中率2.2 移除策略3. Java中的实现4.1. 高并发首选策略cdn/缓存/动态页面静态化/集群/分布式(拆字诀)/同步转异步/限流熔断降级什么样的数据适合缓存?1、访问频率高2、更改频率低3、一致性要求不高2. 重要指标2.1 缓存命中率表明缓存是否运行良好,命中率越高越好命中率 = 从缓存中读取次数 / (总读取次数[从缓存中读取次数 + 从数据库上读取的次数])Miss率 = 没有从缓存中读取的次数 / (总读取次数[原创 2020-09-04 16:20:41 · 278 阅读 · 0 评论 -
Redis 4:哨兵机制(sentinel)的高可用
哨兵机制的高可用1. 高可用2. 三个定时监控任务作用3. 主观下线4. 客观下线5. 领导者哨兵选举流程6. 故障转移1. 高可用当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。2. 三个定时监控任务作用其实整个过程只需要一个哨兵节点来完成,首先使用 Raft 算法(选举算法)实现选举机制,选出一个哨兵节点来完成转移和通知。哨兵有三个定时监控任务完成对各节点的发现和监控:任务 1,每个哨兵节点每 10 秒会向主节点和从节点发送 in原创 2020-08-26 21:57:41 · 197 阅读 · 0 评论 -
Redis6.0哨兵模式搭建,及使用JedisSentinelPool连接客户端
哨兵模式1. 安装环境2. 设置192.168.42.112(主)3. 设置192.168.42.113(从)4. 设置192.168.42.114(从)5. 依次启动192.168.42.112,192.168.42.113,192.168.42.114的redis客户端6. 依次启动192.168.42.112,192.168.42.113,192.168.42.114的redis哨兵7. 连接主节点,查看主从配置8. 停止主节点1. 安装环境使用3台服务器,192.168.42.112(主),1原创 2020-08-24 22:38:22 · 1917 阅读 · 1 评论 -
Redis 3:分布式锁
1.redis分布式锁基础知识缓存有效期redis中的数据,不一定都是持久化的;给定key设置的生存时间,当key过期时,它会被自动删除。SETNX 命令SETNX key value,将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。lua脚本轻量小巧的脚本语言,用于支持redis操作序列的原子性。2.加锁通过setnx向特定的ke原创 2020-08-16 14:29:32 · 312 阅读 · 0 评论 -
Redis 2:持久化机制
1.RDB持久化RDB持久化把当前进程数据生成快照(.rdb)文件保存到硬盘的过程,有手动触发和自动触发手动触发有save和bgsave两命令1.save命令:阻塞当前Redis,直到RDB持久化过程完成为止,若内存实例比较大会造成长时间阻塞,线上环境不建议用它2.bgsave命令:redis进程执行fork操作创建子进程,由子线程完成持久化,阻塞时间很短(微秒级),是save的优化,在执行redis-cli shutdown关闭redis服务时,如果没有开启AOF持久化,自动执行bgsave;原创 2020-08-15 15:55:21 · 98 阅读 · 0 评论 -
Redis 1:缓存雪崩与穿透
1.什么是缓存雪崩前提:为节约内存,Redis一般会做定期清除操作1.当查询 key=fisher的值,此时Redis没有数据;2.如果有5000个用户并发来查询key=fisher,全到Mysql里去查, Mysql会挂掉。解决方案如下: A.设置热点数据永远不过期。 B.加互斥锁2.什么是缓存穿透前提:黑客模拟一个不存在的订单号xxxx1.Redis中无此值2.Mysql中也无此值,但一直被查询解决方案:1.对订单表所有数据查询出来放到布隆过滤器,经过布隆过滤器处理的数据很原创 2020-08-15 15:22:34 · 105 阅读 · 0 评论 -
Centos7安装redis6.0.6教程
1.安装gccyum install gcc -y2.查看gcc版本gcc -v默认是4.8.5,安装redis6.0以上版本,需要升级gcc3.升级gcc版本yum -y install centos-release-sclyum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutilsscl enable devtoolset-9 bashscl enable devtoolset-9 ba原创 2020-08-09 16:19:55 · 1997 阅读 · 0 评论