1 AOP实现Redis缓存服务

1.1 现有代码的分析

说明:
1.虽然在业务层service中完成了代码的实现.但是该代码不具有复用性.如果换了其他的业务则需要重新编辑.
2.由于缓存的代码写在业务层service中,所以代码的耦合性高,不方便以后的扩展.
需求:
1.能否实现代码的复用.
2.能否降低代码的耦合性.

1.2 AOP

1.2.1 AOP作用

名称:面向切面编程.

一句话总结: 在不改变原有代码的条件下,对功能进行扩展.

公式: AOP = 切入点表达式 + 通知方法.

专业术语:
1.连接点: 在执行正常的业务过程中满足了切入点表达式时进入切面的点.(织入) 多个
2.通知: 在切面中执行的具体的业务(扩展) 方法
3.切入点: 能够进入切面的一个判断 if判断 一个
4.目标方法: 将要执行的真实的业务逻辑.

1.2.2 关于通知说明

1.前置通知: 目标方法执行之前执行
2.后置通知: 目标方法执行之后执行
3.异常通知: 目标方法执行之后抛出异常时执行
4.最终通知: 不管什么时候都要执行的方法.

说明:上述的四大通知类型不能控制目标方法是否执行.一般使用上述的四大通知类型,都是用来记录程序的执行状态.

5.环绕通知: 在目标方法执行前后都要执行的通知方法. 控制目标方法是否执行.并且环绕通知的功能最为强大.

1.2.3 切入点表达式说明

1). bean(bean的id) 类名首字母小写 匹配1个类
2). within(包名.类名) 按包路径匹配类 匹配多个类上述表达式是粗粒度的控制,按类匹配.
3).execution(返回值类型 包名.类名.方法名(参数列表))
4)[email protected](包名.注解名) 按注解进行拦截.

1.2.4 AOPDemo复习

JT-13

1.3 实现Redis缓存

1.3.1 需求分析

1.自定义注解CacheFind 主要被注解标识的方法,则开启缓存的实现.
2.为了将来区分业务,需要在注解中标识key属性,由使用者自行填写.
3.为了用户提供数据超时功能.

1.3.2 自定义注解

JT-13

1.3.3 编辑CacheAOP

JT-13

1.3.4 关于环绕通知参数的说明

问题一:连接点必须位于通知的参数的第一位.

JT-13

否则报错信息如下:

JT-13

问题二: 其他四大通知了类型是否可以添加ProceedingJoinPoint对象

答案: ProceedingJoinPoint 只能添加到环绕通知中.
报错如下:
JT-13

1.3.5 关于JoinPoint方法说明

JT-13

1.4 商品列表分类实现缓存处理

说明:在业务方法中添加缓存的注解.

JT-13

2.Redis分片机制

2.1 需求数据

如果需要在redis中进行海量的数据存储,如果只有一台redis显然不能实现该功能.如果通过扩大内存的方式也不能达到要求.因为时间都浪费在寻址中. 如何有效的存储海量的数据呢???

2.2 Redis分片说明

说明:一般采用多台redis,分别保存用户的数据,从而实现内存数据的扩容.对于用户而言:将redis分片当做一个整体,用户不在乎数据到底存储到哪里,只在乎能不能存.
分片主要的作用: 实现内存扩容.

JT-13

2.3 Redis分片准备

2.3.1 创建目录

说明:在redis根目录中创建一个shards目录

JT-13

2.3.2 分片搭建策略

说明:由于Redis启动是根据配置文件运行的,所以如果需要准备3台redis,则需要复制3份配置文件redis.conf. 端口号依次为6379/6380/6381
复制配置文件:

JT-13

修改端口号:

根据配置文件名称,动态修改对应的端口即可.
JT-13
JT-13

启动redis:

JT-13
JT-13

2.3.3 Redis分片入门案例

JT-13

2.4 一致性hash算法

2.4.1 算法介绍

一致性哈希算法在1997年由麻省理工学院提出,是一种特殊的哈希算法,目的是解决分布式缓存的问题。 [1] 在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。一致性哈希解决了简单哈希算法在分布式哈希表( Distributed Hash Table,DHT) 中存在的动态伸缩等问题 [2] 。

2.4.2 常识介绍

1.常见hash多少位16进制数? 8位16进制数
2.16进制数取值有哪些 0-9 A-F 共16个数
3. hash的取值范围从 00000000 ~ FFFFFFFF (24)8
4. 上述取值的个数共有多少个??? 要求以2为底 2^32 幂
5. 对相同的数据进行hash值一致

2.4.3 一致性hash说明

步骤:
1.首先计算node节点
2.将用户的key进行hash计算,之后按照顺时针的方向找到最近的node节点之后链接,执行set操作.

JT-13

1)特性__ 平衡性

①平衡性是指hash的结果应该平均分配到各个节点,这样从算法上解决了负载均衡问题 。
说明: 如果发现节点中存储的数据负载不均,则采用虚拟节点的方式实现数据的平衡(相对平衡)

JT-13

2) 特性__ 单调性

②单调性是指在新增或者删减节点时,不影响系统正常运行 因为可以实现自动的数据迁移.。
原则: 在进行数据迁移时 应该尽可能少的改变原有的数据.

3) 特性___ 分散性

③分散性是指数据应该分散地存放在分布式集群中的各个节点(节点自己可以有备份),不必每个节点都存储所有的数 据 。
鸡蛋不要放在一个篮子里

相关文章:

  • 2021-11-24
  • 2021-08-06
  • 2021-04-10
  • 2021-05-14
  • 2021-07-21
  • 2021-10-23
  • 2022-01-22
猜你喜欢
  • 2021-12-15
  • 2021-10-17
  • 2021-05-18
  • 2022-01-24
  • 2021-10-01
  • 2021-06-02
  • 2021-12-05
相关资源
相似解决方案