Redis系列
Redis系列教程,从入门到实战
Felix-Yuan
Better And Better
展开
-
超详细的Redis入门教程
目录: redis简介 Linux环境安装redis redis的数据类型和常用命令 redis多数据库 redis数据的持久化 redis的事务 Redis主从复制(读写分离)、主从切换(一主二从三哨兵) redis发布订阅 redis单线程模型 redis批量执行命令 redis禁用或重...原创 2020-02-16 20:03:04 · 1825 阅读 · 0 评论 -
如何保证Redis缓存和数据库的双写一致性?
在数据库+缓存模式下,当数据库中的数据需要更新时,缓存里的数据怎么处理?如何保证缓存和数据库中数据的一致性?常用的解决方案有两种(其他渣渣的方案这里不讨论):1、先删除缓存,再更新数据库;2、先更新数据库,再删除缓存;下面我们就来看一下这两种方案,看看它们是怎么保证数据一致性的?一、先删除缓存,再更新数据库理想的流程是这样的:先删除缓存,再更新数据库,更新完数据库后,当有请求进...原创 2020-02-22 15:19:58 · 2241 阅读 · 0 评论 -
Redis的过期策略以及内存淘汰机制
我们知道,redis中缓存的数据是有过期时间的,当缓存数据失效时,redis会删除过期数据以节省内存,那redis是怎样删除过期数据的?删除过期数据的策略是什么?这就是我们今天要讨论的第一个问题:Redis过期策略。redis为什么这么快,原因之一就是Redis操作都是基于内存的,既然是基于内存的,而内存的大小是有限的,当内存不足或占用过高时,怎么办?这就是我们今天要讨论的第二个问题:Redi...原创 2020-02-21 00:06:49 · 8061 阅读 · 5 评论 -
布隆过滤器
我们在《Redis缓存穿透、缓存击穿和雪崩》中说过,解决缓存穿透的有效办法之一就是使用布隆过滤器。实际上,布隆过滤器不仅仅可以解决缓存穿透的问题,还被广泛应用于网页黑名单系统、垃圾邮件过滤系统、爬虫网址判重等系统,那到底什么是布隆过滤器,今天我们就来揭开它的神秘面纱。一、布隆过滤器的应用场景我们先来看下布隆过滤器的应用场景,看看它到底能做什么。1、解决(缓解)缓存穿透我们经常会把一...原创 2020-02-19 23:02:50 · 4721 阅读 · 0 评论 -
Redis缓存穿透、缓存击穿和雪崩
一、缓存穿透在讨论缓存穿透之前,我们先来看下从缓存中读取数据时的流程,如图:缓存穿透是什么?如果每次都去查一个“缓存和数据库中都必不存在的数据(如id=-1的数据)”,因为缓存中不存在,那么每次请求都会打到DB上,从而导致缓存失去意义,在高并发的情况下就可能导致数据库崩溃,这就是缓存穿透。缓存穿透的解决方案1、规范key过滤规范key的命名,并且统一缓存查询的入...原创 2020-02-18 22:09:20 · 5566 阅读 · 2 评论 -
Redis分布式锁的Java实现(基于Lua脚本)
※ Redis分布式锁的实现,主要就是基于“加锁、释放锁、防止出现并发”三点来展开的。网上也有很多例子,但都没有实现守护线程,我在这里将守护线程的实现整合进去,供大家参考。在《Redis实现分布式锁的思路》中我们讲了Redis分布式锁实现的思路,没看过的童鞋可以先去看一下,因为这里的实现就是基于设计思路展开的。实现Redis分布式锁,我们需要考虑 加锁,使用Redis 2.6.12以...原创 2020-02-17 22:35:44 · 1207 阅读 · 2 评论 -
Redis实现分布式锁
锁我们都不陌生,在多线程并发的情况下,如何保证某代码块在同一时刻只能被一个线程访问呢,这时候我们就需要用到“锁”,提到锁的实现,我们可能想到了java的synchronized或ReentrantLock,但需要注意的是,synchronized或ReentrantLock只能保证在同一个JVM内的多个线程同步执行,如下图,那么,在集群分布式环境中,如何保证不同节点的线程同步执行呢...原创 2020-02-17 22:27:55 · 591 阅读 · 0 评论