Redis-2-单线程|redis==作者:YB-Chi==
[toc]
简介我们通常说,Redis 是单线程,主要是指 Redis 的网络 IO和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步 ...
阅读更多
Redis-17-分布式锁|redis==作者:YB-Chi==
[toc]
Redis属于分布式系统,当有多个客户端需要争抢锁时,我们必须要保证,这把锁不能是某个客户端本地的锁。否则的话,其它客户端是无法访问这把锁的,当然也就不能获取这把锁了。所以,在分布式系统中,当有多个客户端需要获取锁时,我 ...
阅读更多
Redis-16-无锁原子操作,如何应对并发|redis==作者:YB-Chi==
[toc]
简介一旦有了并发写操作,数据就会被修改,如果我们没有对并发写请求做好控制,就可能导致数据被改错,影响到业务的正常使用(例如库存数据错误,导致下单异常)。
为了保证并发访问的正确性,Redis提供了两种方法,分别是加锁和原 ...
阅读更多
Redis-13-数据一致性|redis==作者:YB-Chi==
[toc]
缓存和数据库的数据不一致是如何发生的?首先,我们得清楚“数据的一致性”具体是啥意思。其实,这里的“一致性”包含了两种情况:
缓存中有数据,那么,缓存的数据值需要和数据库中的值相同;
缓存中本身没有数据,那么,数据库中的 ...
阅读更多
Redis-15-缓存污染|redis==作者:YB-Chi==
[toc]
缓存污染介绍那什么是缓存污染呢?在一些场景下,有些数据被访问的次数非常少,甚至只会被访问一次。当这些数据服务完访问请求后,如果还继续留存在缓存中的话,就只会白白占用缓存空间。这种情况,就是缓存污染。
当缓存污染不严重时, ...
阅读更多
Redis-14-缓存雪崩、击穿、穿透|redis==作者:YB-Chi==
[toc]
缓存雪崩缓存雪崩是指大量的应用请求无法在Redis缓存中进行处理,紧接着,应用将大量请求发送到数据库层,导致数据库层的压力激增。
缓存雪崩一般是由两个原因导致的,应对方案也有所不同,我们一个个来看。
第一个原因是:缓存中 ...
阅读更多
Redis-12-LRU&LFU|redis==作者:YB-Chi==
[toc]
LRUvolatile-lru和allkeys-lru策略都用到了LRU算法。LRU算法的全称是Least Recently Used,从名字上就可以看出,这是按照最近最少使用的原则来筛选数据,最不常用的数据会被筛选出来 ...
阅读更多
Redis-10-旁路缓存Redis如何工作|redis==作者:YB-Chi==
[toc]
缓存的特征一个系统中的不同层之间的访问速度不一样,所以我们才需要缓存,这样就可以把一些需要频繁访问的数据放在缓存中,以加快它们的访问速度。
计算机系统中,默认有两种缓存:
CPU里面的末级缓存,即LLC,用来缓存内 ...
阅读更多
Redis-11-淘汰策略|redis==作者:YB-Chi==
[toc]
设置多大的缓存容量合适?实际应用中的数据访问是具有局部性的。下面有一张图,图里有红、蓝两条线,显示了不同比例数据贡献的访问量情况。蓝线代表了“八二原理”表示的数据局部性,而红线则表示在当前应用负载下,数据局部性的变化。
...
阅读更多
Redis-1-数据结构|redis==作者:YB-Chi==
[toc]
问题画像
数据结构
键和值的结构组织为了实现从键到值的快速访问,Redis 使用了一个哈希表来保存所有键值对。一个哈希表,其实就是一个数组,数组的每个元素称为一个哈希桶。所以,我们常说,一个哈希表是由多个哈希 ...
阅读更多