首页 > 数据库 >Redis集群模式incr保证原子性的原理

Redis集群模式incr保证原子性的原理

时间:2023-10-31 09:11:57浏览次数:33  
标签:incr key1 Redis 实例 集群 host2 host1

1.主要是redis的key会解析到固定的主机上,比如集群上有host1,host2,host3;然后key1可能会解析后发现是要发到host2上,则在host2正常的情况下(有点像kafka rebalance;consumer处理哪些分区),key1会一直在host2上进行操作;

因此在redis集群正常情况下不会出现对key1第一次incr是在host2,第二次是host1,然后这个时候三个实例之间的数据还没有同步完导致对key1的两次incr返回的都是同一个值;

但是如果是redis状态异常则可能出现问题(包括集群某个实例下线或者某个实例增加,都会导致rebalance,即原先key1是host2来处理,可能变成host1了),比如如果此时down掉了一个实例

是host2,那么down的时候可能host2的数据还没有同步到其他实例上,这个时候key1经过新的“Rebalance”需要放到host1上去处理,可能就会导致两次incr得到的是相同的数据;

 

而如果是增加了实例,那新增的实例显然后面也是需要提供服务的,所以也会造成key1的“rebalance”(如果这个是客户端行为那应该是可以避免)

标签:incr,key1,Redis,实例,集群,host2,host1
From: https://www.cnblogs.com/silentdoer/p/17799481.html

相关文章

  • 【Redis使用】一年多来redis使用markdow笔记总结,第(1)篇:Redis命令详解
    Redis是一个高性能的key-value数据库。本文会让你知道:什么是nosql、Redis的特点、如何修改常用Redis配置、写出Redis中string类型数据的增删改查操作命令、写出Redis中hash类型数据的增删改查相关命令、说出Redis中list保存的数据类型、使用StrictRedis对象对string类型数据......
  • DHorse改用fabric8的SDK与k8s集群交互
    现状在dhorse1.4.0版本之前,一直使用k8s官方提供的sdk与k8s集群交互,官方sdk的Maven坐标如下:<dependency> <groupId>io.kubernetes</groupId> <artifactId>client-java</artifactId> <version>18.0.0</version></dependency>但是自从1.4.0版本以后,dhor......
  • 使用 Sealos 一键部署 Kubernetes 集群
    Sealos是一款以Kubernetes为内核的云操作系统发行版,使用户能够像使用个人电脑一样简单地使用云。与此同时,Sealos还提供一套强大的工具,可以便利地管理整个Kubernetes集群的生命周期。Sealos不仅可以一键安装一个单节点的Kubernetes开发环境,还能构建数千节点的生产高可......
  • Redis的四种模式:单机、主从、哨兵、集群简介
    Redis的单机模式单机模式就是安装一个redis,启动起来,业务调用即可。具体安装步骤和启动步骤就不赘述了,单机在很多场景也是有使用的,例如在一个并非必须保证高可用的情况下。单机的优点:部署简单,0成本。成本低,没有备用节点,不需要其他的开支。高性能,单机不需要同步数据,数据......
  • redis 替换keys方案 scan
    redis替换keys方案@AutowiredprivateRedisTemplateredisTemplate;publicSet<String>keyScan(Stringkey){//批量查询需要统计的数据Set<String>keys=(Set<String>)redisTemplate.execute((RedisCallback<Set<String>>)connec......
  • 集群/堆叠的常用部署实施方式,你会吗?
    你们好,我的网工朋友。交换机的连接方式大家应该都知道吧,一共有三种,分别是:级联、堆叠和集群。级联一般用来实现多台交换机之间的互相连接。堆叠和集群,就总有网工把这两给搞迷糊了。堆叠就是将多台支持堆叠特性的交换机通过堆叠线缆连接在一起,从逻辑上虚拟成一台交换设备,作为一个整体......
  • redis秒杀记录
          解决超卖问题,加乐观锁:   ......
  • spring-boot-starter-redis 熟练运用
    Redis的Java客户端很多,官方推荐的有三种:Jedis  (javaredis)RedissonLettuceSpring对Redis客户端进行了整合,提供了SpringDataRedis,在SpringBoot项目中还提供了对应的Starter,即spring-boot-starter-data-redis。Jedis(了解)项目准备Jedis是Redis的Java版本客户端,现......
  • C# redis操作(StackExchange.Redis )
    参考:https://www.cnblogs.com/wzh2010/p/17205387.html参考:https://www.runoob.com/redis/redis-keys.html测试redis,使用StackExchange.Redis的api,实现发布/订阅, 存放值, 分布式锁,排序usingSystem;usingSystem.Collections.Concurrent;usingSystem.Collect......
  • redis清空所有数据的三种方法
    redis清空所有数据的三大指令:FLUSHALL,FLUSHDB,SCREPTFLUSH1.FLUSHALL[ASYNC]Redis提供了一个FLUSHALL命令,可以清空整个数据库。当执行这个命令时,Redis会将所有存储在内存中的数据全部删除,并将内存空间释放回操作系统。FLUSHALL命令的执行时间取决于您的数据库大小和Redis服......