Redis缓存
了解缓存和工作原理
什么是缓存?缓存是一个高速交换数据的存储器。
作用:为了更快的访问和操作数据。
Reids的工作原理

当用户发送请求的时候,会访问Java程序,而一般我们写的普通代码,会直接访问数据库进行操作,但是当用户有成千上万甚至更多的时候,就会导致数据的压力大大增加,就会可能导致数据库直接瘫痪,所以我们就会使用缓存,就是将我们常用的数据放到缓存中,当访问的时候就会先访问缓存,如果缓存红油数据就直接返回,没有就访问数据库,这样既提高了效率,又减少了数据库的压力。
缓存的优点
1.数据访问快,用为缓存中的数据是存储再内存中,而数据库的数据存储到磁盘中,而内存的访问效率大大快于磁盘的访问效率。
2.缓存更容易实现分布式集群,所以它可以承受更多的压力(即就是一台服务器可以将他的压力分给其他堕胎服务器),减少了服务器的压力。
3.缓存的存储是以key-value的方式进行存储,存储方式比较简单,所以它的查询效率是非常高的。
缓存的分类
缓存分为两类:
本地缓存(单机缓存),但是缺点是,当这台服务器挂掉了,就完全瘫痪了。
集群式缓存:就算某一台服务器挂掉了,其他服务器也可以处理掉瘫痪掉的服务器的任务,保证了服务器的稳定性。
其中分发器会有限将任务分发给未瘫痪的服务器
缓存是各个服务器共享的资源
缓存的使用
本地缓存:Springcache mybatis;
分布式缓存 Redis 和 Memcache
分布式缓存-Redis

当用户访问的时候,会先调用Java程序,然后先在缓存中查找数据,如果有直接返回,没有就会访问数据库
Redis 和Memcached的区别
存储方式不同:Redis 是存储在内存和磁盘中的,存储在内存中提高访问效率,存储到磁盘中为了防止特殊情况数据丢失,而且Memcached为了更大化提高效率,全部数据放到内存中,当有特殊情况下,会有数据丢失的风险
存储的数据类型:Redis可以存储更多的数据类型,而Memcached存储数据类型比较少
存储数据大小是不同的:Redis是512MB而Meecached 是1MB
Redis的五大数据结构
字符串类型

我的理解是String key1=value1
也可以设置缓存过期时间,在五秒钟后访问会显示null

字典类型
字典类型的是Java中的Map<key ,Map<key1,value1 >>
相当于就是这个结构


这个意思就是String 是h1 value 是 k1 v1 k2 v2
当我们想要获取k2的值的时候 就可以 hget h1 k2 来进行获取
List类型

Set类型

跟List的区别就是它是无序的,并且不可以存储重复值
Zset类型

相当于就是Set的升级版,添加了score字段,数据有序存储。
Redis的持久化
Redis 将数据存储到内存和磁盘中,目的是为了加快访问速度和防止数据丢失。
RDB(Redis Database)
快照,将数据库中以二进制的存储方式存储到文件中,优点是数据量比较少,回复的时候会比较容易,但是会有丢失数据的风险。
RDB优点:存储是以二进制进行存储,占用内存少,对于灾难恢复比较有用,相对比AOF更容易重启
RDB缺点:会有丢失数据的风险:数据集过大会导致CPU性能不佳。
AOF(append only file )
AOF(append only file )操作Redis对数据进行备份保存,缺点是文件比较大,数据恢复起来比较困难
AOF优点:减少了数据丢失的概率
AOF缺点:数据一旦丢失,会比较难恢复
混合持久化持久化
混合持久化AOF+RDB Redis4.0 新增的操作 在一度那时间先以RDB进行存储报头,后续在根据AOF及逆行存入文件,这样既能保证重启的速度,又能降低数据数据的风险 但是添加了RDB格式的文件回事AOD的可读性变差,兼容性变差,Redis之前版本不能使用。
面试题
缓存雪崩
缓存雪崩就是在同一时间内大量的缓存过期,导致用户直接访问数据库,数据库压力大大增加的现象。
解决办法:
1.设置过期时间保证过期不是在同一时间过期(固定时间+随机时间)
2.进行加锁但是牺牲了用户体验
3.进行二级缓存
缓存穿透
缓存存储的时候,缓存和数据库中都没有数据。这样每次请求都会查询数据库的现象。
解决方法:不管有无数据,都将结果缓存到缓存中
缓存击穿
热点缓存在访问是突然过期了,导致大量的用户直接访问数据库的现象。
解决办法
1.将热点缓存设置为永不过期
2.进行加锁
缓存预热
将数据提前存储到缓存中,需要时,直接快速使用。
缓存预热的实现方式
1.在系统启动之后进行热点缓存的预热,
2.手动触发缓存预热
3.设置当时服务,在系统启动之后的一段时间后,进行缓存预热。
Redis 集群
主从同步

主从同步:将一台服务器,分成一主多从的服务器方式。
缺点:当主节点发生异常,只能人工的回复主从的正常运行。
主从同步实现的方式:主从同步,从不节点可以作为其他节点的主节点
主从同步的优点:性能方面:主从同步提高了程序运行的效率,将一台服务器的压力分给其他服务器
高可用:主从同步之后可以将从节点特省委主节点,为Redis服务器节省时间,并且可以防止数据的丢失。
哨兵模式

相当于就是解决主从同步的缺点:用来监视主从服务器节点,在主节点发生异常时,自动恢复。
哨兵的工作原理:首先每个Sentinel(哨兵)会以每秒钟1次的频率向主服务器,从服务器,和其他的哨兵,发送一个ping命令,如果返回时间超过30s就会被标记为主观下线,
如果一个主服务器被标记为主观下线,拿起它的其他的从服务器就会协商出一个新的值节点 这就叫客观
Redis集群服务

自动实现容灾回复,完全抛弃哨兵模式
实现多住多从 ,理论上相对比主从同步的性能提升了2倍。
本文详细介绍了Redis缓存的工作原理、优点、分类及其使用,包括Redis与Memcached的区别、五大数据结构、持久化策略RDB和AOF,以及应对缓存雪崩、穿透和击穿的解决方案。同时,讨论了Redis的主从同步、哨兵模式和集群服务,旨在深入理解Redis缓存的全貌。

被折叠的 条评论
为什么被折叠?



