-
Redis的内存回收原理,及内存过期淘汰策略详解
Redis内存回收机制 Redis的内存回收主要围绕以下两个方面: 1.Redis过期策略:删除过期时间的key值 2.Redis淘汰策略:内存使用到达maxmemory上限时触发内存淘汰数据 Redis的过期策略和内存淘汰策略不是一件事,实际研发中不要弄混淆了,下面会完整的介绍两者。 Redis过期策略 过期策略通常有以下三种: 1.定时过期 每个设置过期时间的key都需要创建一个定时器,到过期…- 5.4k
- 0
-
分布式锁的由来、及Redis分布式锁的实现详解
在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。那具体什么是分布式锁,分布式锁应用在哪些业务场景、如何来实现分布式锁呢?今天来探讨分布式锁这个话题。 什么是分布式锁 要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。 1.线程锁 主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同…- 6.3k
- 0
-
Redis并发竞争key的解决方案详解
Redis高并发的问题 Redis缓存的高性能有目共睹,应用的场景也是非常广泛,但是在高并发的场景下,也会出现问题: Redis缓存和MySQL数据一致性方案详解 如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题 以及今天要谈到的Redis并发竞争问题,这里的并发指的是多个redis的client同时set key引起的并发问题。 比如:多客户端同时并发写一个key,一个key的值是1,本…- 6.2k
- 0
-
Redis缓存和MySQL数据一致性方案详解
需求起因 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。 这个业务场景,主要是解决读数据从Redis缓存,一般都是按照下图的流程来进行业务操作。 读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出现缓存(Redis)和数据库(MySQL)间的数据…- 10.9k
- 0
-
Redis哨兵、复制、集群的设计原理,以及区别
前一篇文章Redis为什么是单线程、及高并发快的3大原因详解谈了Redis高并发快的3个原因,本篇主要谈Redis的高可用,两篇合起来就可以把redis的高并发和高可用搞清楚了。 谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。 哨兵(Sentinel):可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能。 复制(Replic…- 8k
- 0
-
Redis为什么是单线程、及高并发快的3大原因详解
Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快; 2.redis是单线程的,省去了很多上下文切换线程的时间; 3.redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll 自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间。 下面重点介绍…- 6.8k
- 0
-
如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
Java相关的面试都会问到缓存的问题:史上最全Redis面试49题(含答案),除此之外还会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等不常见的问题,但却是非常重要的问题,今天谈谈这个话题。 基本看完这两篇,可以对redis有一个比较全面的初步了解,后续我再补充redis相关的实战篇,总结为一个redis系列。 缓存雪崩 数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都…- 9.8k
- 0
-
Redis缓存的设计、性能、应用与数据集群同步
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。 因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的…- 5.2k
- 0