redis使用技巧 redis使用方案

调研Redis高可用两种方案Redis中为了实现高可用(High Availability,简称HA) , 采用了如下两个方式:Redis中主从节点复制数据有全量复制和部分复制之分 。
【redis使用技巧 redis使用方案】Redis 高可用方案常用的有两种:Redis Sentinel 和 Redis Cluster ,本篇笔记介绍这两种方案如何在 Kubernetes 中部署 。
Redis哨兵是一种自动化的Redis高可用解决方案,可以监测主节点的状态 , 并在主节点宕机后自动将从节点升级为新的主节点,以保证Redis服务的高可用性 。
redis高可用:如果你做主从架构部署,其实就是加上哨兵就可以了,就可以实现,任何一个实例宕机,自动会进行主备切换 。
Redis缓存穿透解决方案:布隆过滤器1、如果非要用这种方式来解决穿透问题的话,尽量将无效的 key 的过期时间设置短一点比如 1 分钟 。另外 , 一般情况下我们是这样设计 key 的: 表名:列名:主键名:主键值 。
2、预防和解决缓存穿透问题,可以考虑以下两种方法:缓存空对象: 将空值缓存起来,但是这样就有一个问题,大量无效的空值将占用空间 , 非常浪费 。
3、在程序的世界中,布隆过滤器是程序员的一把利器,利用它可以快速地解决项目中一些比较棘手的问题 。如网页 URL 去重、垃圾邮件识别、大集合中重复元素的判断和缓存穿透等问题 。
如何使用redis实现分布式锁功能?1、使用分布式锁要满足的几个条件:系统是一个分布式系统(关键是分布式 , 单机的可以使用ReentrantLock或者synchronized代码块来实现)共享资源(各个系统访问同一个资源,资源的载体可能是传统关系型数据库或者NoSQL) 。
2、需要在获得 lock-key 后判断加锁对象是否为当前client,是,则解锁 。
3、使用redis实现并发锁,主要是靠两个redis的命令:setnx和getset 。那我们的设计思路就是:上面的代码使用了一个RedisService的类,里面主要是简单封装了一下redis的操作,你可以替换为自己的service 。
4、用SETNX实现分布式锁 利用SETNX非常简单地实现分布式锁 。
5、可以在删除锁的时候先get值 , 判断值是否是当前线程存的随机值,只有相同才执行删锁的操作;当然也要使用 lua 脚本执行来保证原子性 。
6、此时就需要使用分布式锁了 。简而言之,分布式锁就是用来控制同一时刻,只有一个线程可以访问被保护的资源 。可以使用 SETNX key value 命令实现互斥的特性 。

    推荐阅读