Redis总结

当前很多企业中,为实现数据查询效率高且快的目的,都在使用redis作为自己的缓存核心件,因此,本文想从这点出发,来简单阐述一下为何redis这么抢手?

一.什么是Redis?

首先,我们要了解什么是redis?它有什么特点?为何要用它呢?请看下图。
redis概念
那么大家肯定会问,redis怎么是个单线程呢?还特别快?
这是因为redis的瓶颈并不是cpu的运行速度,而往往是网络带宽和机器内存大小,单线程切换开销小,容易实现,既然单线程容易实现,而且CPU不会成为瓶颈,那就顺利成章采用单线程方案。如果CPU成为你的Redis瓶颈了,或者,你就是不想让服务器其他核闲置,那怎么办?那也很简单,你多起几个Redis进程就好了,redis-cluster可以帮你做的更好。
那么单线程可以处理高并发请求吗?答案是肯定的,redis就实现了,高并发并不是并行。(相关概念:并发性I/O流,意味着能够让一个计算单元来处理来自多个客户端的流请求。并行性,意味着服务器能够同时执行几个事情,具有多个计算单元)。
关于redis采用多路复用io阻塞机制,详情看[redis多路复用io阻塞机制https://blog.csdn.net/javaer_lee/article/details/87444386]。
Redis数据类型有很多,使得其在很多场景均可以运用到Redis,如图:
在这里插入图片描述

二.Redis如何使用

配置完成redis之后,redis的代码应该写在项目中的哪个部分?如果将缓存的代码写到业务代码中,首先代码不能复用,并且造成业务耦合性高。使用AOP面向切面编程最好。面向切面编程有以下优势:
核心:在不影响原有代码基础上,对方法进行扩展,减少代码耦合性。
公式:切面=切入点表达式+通知

redis在切面应用

三.Redis原理

Redis持久化策略:我们知道redis的运行环境的内存中,其特点是断电或者宕机就会导致数据清空,怎么来避免出现这种情况发生呢?那就是加持久化策略。
Redis持久化策略
Redis内存策略:redis的数据保存在内存中,但是内存资源是有限的.如果需要存储海量的数据,则将之前的旧的数据应该先删除,之后再新增.总共有9种:
Redis内存策略
Redis缓存问题:缓存也会出现很多问题,针对缓存问题进行归纳,如图:
Redis缓存问题

四.Redis内部机制

首先应先提分片机制:由于业务需要,通常可能会将海量的数据保存到redis的内存中,实现用户快读读取.但是Redis内存容量有限,不能一味的扩大内存.因为寻址的时间大大增加,性价比不高.所以最好的方式准备多台redis分别存储数据,实现内存的扩容.提高读写效率.如图
分片机制
由于采用分片机制,便会新增或者移除节点,这样会改变我们之前的映射关系,因此为尽可能减小影响,采用一致性hash算法,同时也解决了分布式环境下的存储动态伸缩性(弹性)问题。
什么是一致性hash算法?是一种特殊的哈希算法,目的是解决分布式缓存的问题。[一致性hash算法解释https://www.cnblogs.com/lpfuture/p/5796398.html],如图
一致性hash算法
一致性hash算法特点:
1.平衡性:是为了解决通过hash计算得到的结果是随机的,可能出现数据分配严重不平衡的情况,平衡性是指hash的结果应该平均分配到各个节点,这样从算法上解决了负载均衡问题,采用的方法是引入虚拟节点。
一致性hash算法平衡性
2.单调性:单调性是指在新增或者删减节点时,不影响系统正常运行,其中的数据可以自动的实现迁移。
一致性hash算法单调性
3.分散性:是指数据应该分散地存放在分布式集群中的各个节点(节点自己可以有备份),不必每个节点都存储所有的数据,也就是不要放在一个篮子里。

还有一个重要机制是Redis哨兵机制,若采用分片机制,如果将来有一台redis宕机,则直接影响程序正常的执行;如何解决:高可用。,也就是说当服务器宕机可以自动的实现主从的切换。但前提条件是需要配置缓存数据同步,数据的同步是实现高可用的前提条件,如果没有数据同步 即使实现了高可用,则也可能由于从服务器中没有数据而导致缓存雪崩效应。
因此引出哨兵机制,那什么是哨兵机制呢?它的工作原理是什么?它和分片机制有什么分别呢?如图:
Redis哨兵机制
终于到了Redis集群,那么集群是什么?在什么时候用最合适呢?集群是Redis提供的分布式数据库方案,通过分片来进行数据共享,并提供复制和故障转移功能的一个机制。也就是说集群可以是sentinel哨兵、主从模式和分片机制的结合体,通过cluster可以实现主从和master重选功能,这种模式适合数据量巨大的缓存要求,当数据量不是很大的时候使用哨兵即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值