分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现 如果不同的系统或同一个系统的不同主机之间共享了某个资源时,往往通过互斥来防止彼此干扰。redis分布式锁的三要素:1.加锁使用setnx命令加锁,key是锁的唯一标识,可以根据业务来命名,value为当前线程的ID或者UUID(后面介绍原因) 比如扣减商品库存,key可是 lock_stock_upc ,value可以为当前线程I
转载 2023-12-14 21:19:07
92阅读
1,限流概念:在开发高并发系统时,有很多种方法可用来保护系统,提升系统应用性能:缓存、降级、限流等。缓存:提升系统访问速度,增大系统处理能力; 降级:服务出现问题或影响核心流程的性能时,需要暂时屏蔽,待高峰过去或问题解决后再打开,(某些场景下未不紧急或不关键的服务做优雅的降级处理,保障关键服务运行); 限流:部分场景比如:稀缺资源(秒杀,抢购)、写服务(评论、下单)、频繁复杂查询(评论最后几页)等
转载 2023-05-25 14:33:40
71阅读
限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务。Nginx接入层限流 按照一定的规则如帐号、IP、系统调用逻辑等在Nginx层面做限流业务应用系统限流 通过业务代码控制流量这个流量可以被称为信号量,可以理解成是一种锁,它可以限制一项资源最多能同时被多少进程访问。代码实现import redis.clients.jedis.Jed
转载 2023-10-18 17:44:42
96阅读
面对越来越多的高并发场景,限流显示的尤为重要。当然,限流有许多种实现的方式,Redis具有很强大的功能,我用Redis实践了三种的实现方式,可以较为简单的实现其方式。Redis不仅仅是可以做限流,还可以做数据统计,附近的人等功能,这些可能会后续写到。1第一种:基于Redis的setnx的操作我们在使用Redis分布式锁的时候,大家都知道是依靠了setnx的指令,在CAS(Compare and
转载 2023-07-09 11:20:27
77阅读
纠正一下:AOF三种写回策略是同步写,但AOF重写机制可以fork子进程来执行。Redis作为MySQL的缓存,能提供快速的读写,是基于内存的,当Redis宕机后,数据全部丢失,如何恢复缓存中的数据呢,最容易的办法是从数据库中同步这些数据到缓存中,若Redis本身既做缓存又做数据库,那如何处理?AOF先写缓存,然后再写AOF文件,AOF文件中记录的是每一条正确写入到缓存中的命令,Redis是一切从
限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务。前几天在DD的公众号,看了一篇关于使用 瓜娃 实现单应用限流的方案,参考《redis in action》 实现了一个jedis版本的,都属于业务层次限制。 实际场景中常用的限流策略:Nginx接入层限流 按照一定的规则如帐号、IP、系统调用逻辑等在Nginx层面做限流业务应用系统
转载 2023-12-05 20:37:38
38阅读
(文章目录) Redis分布式锁 Redis实现分布式锁主要利用Redis的setnx命令。setnx是<font color="red">SET if not exists(如果不存在,则 SET)</font>的简写。 127.0.0.1:6379> setnx test:lock 1 #在 test:lock 不存在的情况下,赋值(加锁) (
原创 2023-05-11 14:55:06
93阅读
任何限流都不是漫无目的的,也不是一个开关就可以解决的问题,常用的限流算法有:令牌桶,漏桶。在之前的文章中,也讲到过,但是那是基于单机场景来写。之前文章:接口限流算法:漏桶算法&令牌桶算法然而再牛逼的机器,再优化的设计,对于特殊场景我们也是要特殊处理的。就拿秒杀来说,可能会有百万级别的用户进行抢购,而商品数量远远小于用户数量。如果这些请求都进入队列或者查询缓存,对于最终结果没有任何意义,徒增
转载 2024-03-03 21:50:45
66阅读
任何限流都不是漫无目的的,也不是一个开关就可以解决的问题,常用的限流算法有:令牌桶,漏桶。在之前的文章中,也讲到过,但是那是基于单机场景来写。之前文章:接口限流算法:漏桶算法&令牌桶算法然而再牛逼的机器,再优化的设计,对于特殊场景我们也是要特殊处理的。就拿秒杀来说,可能会有百万级别的用户进行抢购,而商品数量远远小于用户数量。如果这些请求都进入队列或者查询缓存,对于最终结果没有任何意
Redis 源码解读之逐出策略背景和问题本文想解决的问题:redis 触发逐出的时机是怎样的?redis 逐出策略有哪些?如何在海量的 key 中快速找到逐出评价值(idle)最高的key,并将之逐出?LFU 算法的频率是如何统计的?结论redis 触发逐出的时机是怎样的?如图,主要有两个地方会触发逐出。更新 maxmemory 参数,导致实际使用内存大于该限制。处理客户端请求,使用到的内存大于内
转载 2023-09-06 19:52:52
99阅读
一、Redis数据结构dict:键值对的存储空间 expires:存储某个键的过期时间,值为long long类型的绝对过期时间。二、过期键删除策略1.定时删除策略Redis设置过期时间时,同时设置一个定时器,到时间删除键。优点:可以即时删除键值,对内存比较友好。 缺点:存在大量的定时器,对CPU行能不友好2.惰性删除策略:对过期的键不去处理,在下一次使用键的时候判断是否过期,若过期则删除。优点
转载 2023-08-07 22:33:24
75阅读
背景为提高系统性能、减小数据库压力,需要对频繁查询的数据进行缓存处理。为保证mysql和redis数据一致,网上博客一大堆缓存同步策略,最核心的问题其实还是数据修改时的数据一致性:先更新(删除)缓存再更新数据库、先更新数据库再更新(删除)缓存、延时双删等。以上所说的这些策略主要是考虑并发场景下db-redis之间的数据最终一致,如果业务场景没有多大的并发,或缓存的数据大多是配置之类不影响业务主流程
一 引言缓存的引入后极大的提高了服务器的访问速率,但是当持久化数据发生变化时,如何更新缓存成为了研发中不可规避的问题,不同的方案决定缓存的最终的一致性,本文就redis的缓存读写策略,以及其他的缓存读写策略做简要概述二 Cache Aside Pattern(旁路缓存模式)Cache Aside Pattern是一种比较常用的缓存模式,适合读比较多的场景Cache Aside Pattern 中服
ShardingSphere——分片及策略:https://blog.csdn.net/weixin_38910645/article/details/107538848 Sharding-JDBC:可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。 Sharding-Proxy:定位
原创 2021-07-21 11:46:59
830阅读
redis作为一个中间件,很多时候被视为一个缓存,缓存存在cache中,也就是高速内存。但是有时也需要可以长时间的保存数据,甚至打开项目的时候,可以在缓存中进行访问。也就是把数据放在磁盘中。有两种策略:RDB模式和AOF模式,其中的RDB模式是redis默认的长时间保存数据的模式。RDB模式:redis中的set操作,在规定的周期内执行了指定的次数时,redis 会自动的将内存中的数据持久化到硬盘
转载 2023-08-10 17:15:16
134阅读
  安装了一主两从节点,启动之后发现有一个警告:大概是说overcommit_memory设置成了0,在低内存环境下后台保存可能会失败,设置成1重启可解决。然后,不太懂这个配置的含义,google一把: overcommit_memory参数说明:设置内存分配策略(可选,根据服务器的实际情况进行设置)/proc/sys/vm/overcommit_memory可选值:0、1、2。0, 表
转载 2023-07-04 16:13:18
84阅读
文章摘要:redis 作为一个高性能key-value 数据库,当内存不足是必然需要执行数据淘汰策略,本文只分析主动淘汰策略,讨论的版本是redis3.0 配置参数和相关数据结构:maxmemory_policy 设置淘汰策略取值如下:1、volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰2、volatile-ttl
转载 2023-06-29 11:41:16
103阅读
缓存技术 下图左侧为客户端直接调用存储层的架构,右侧为比较典型的缓存层+存储层架构。收益: ①加速读写:因为缓存通常都是全内存的,而存储层通常读写性能不够强悍(例如MySQL),通过缓存的使用可以有效地加速读写,优化用户体验。 ②降低后端负载:帮助后端减少访问量和复杂计算(例如很复杂的SQL语句),在很大程度降低了后端的负载。 成本: ①数据不一致性:缓存层和存储层的数据存在着一定时间窗口的不一致
转载 2023-06-29 10:53:11
69阅读
摘要:作为缓存系统都要定期清理无效数据,就需要一个主键失效和淘汰策略。 >>EXPIRE主键失效机制 在Redis当中,有生存期的key被称为volatile, 在创建缓存时,要为给定的key设置生存期,当key过期的时候(生存期为0),它可能会被删除。作为缓存系统都要定期清理无效数据,就需要一个主键失效和淘汰策略。>>EXPIRE主键失效机制在Redis当中,有
转载 2023-07-04 15:42:59
179阅读
1. 删除策略1.1. 立即删除(过期后立即删除)原理:key 过期之后立即删除缺点:对CPU不友好,用处理器性能换取存储空间(拿时间换空间),存在大量 key 同时过期占用大量 CPU 资源进行删除操作的情况1.2. 惰性删除原理:过期后先不删除,等下一次访问时判断是否过期,若过期则立即删除缺点:对CPU不友好,用处理器性能换取存储空间(拿时间换空间),存在长时间未访问的过期 key 大量堆积
原创 2023-12-14 17:11:35
90阅读
  • 1
  • 2
  • 3
  • 4
  • 5