Redis分布式缓存的实现(一)

本文探讨了Redis作为分布式缓存的实现,包括缓存的作用、内存数据特性、适用数据类型、本地缓存与分布式缓存的区别。通过Mybatis二级缓存结合Redis,展示了在分布式系统中如何实现高效的缓存策略,强调了Redis在集群环境下的共享优势。
摘要由CSDN通过智能技术生成

Redis中分布式缓存的实现

1.什么是缓存

定义:就是计算机中的一段数据

2.内存中数据特点

1.读写快。因为Redis的数据直接在内存里面,我们用的时候不需要经过这种io读取的过程,直接拿过来用就行。而且我们也是直接操作内存中的数据,所以相对于我们操作磁盘上的数据要快的多得多,因为磁盘上的数据要经过io加载到内存中,才可以进行操作。
2.断电立即丢失。所谓断电立即丢失,就是在某一时刻我们的计算机突然断电了,就会让我们内存中的数据立即丢失。
那么我们了解完缓存的定义和缓存的特点之后,缓存到底能干什么呢?

3.缓存解决了什么问题?

1.提高了网站的吞吐量,提高了网站的运行效率。我们刚刚也了解了,缓存时计算机中的一段数据,它最大的特点就是读写快,正因为它读写很快,所以我们可以把一些常用的应用数据放在内存中,以后我们用的时候就直接去我们的应用数据中拿。
在这里插入图片描述
如图中描述,当我们在客户端发送一个请求,应用程序会根据我们的jdbc或者mybatis去打开数据库的连接,通过io把磁盘中的数据加载到应用程序的内存中,再响应给客户端之后,释放内存。但假如我们同时来了一百个请求对我们的应用发起查询操作,如果请求的数据在缓存中有,就只在缓存中获取,没有再去查数据库,再把得到数据放入缓存一份儿,这样就极大的提高了网站的运行效率,在一定程度上减轻了数据库的压力。那么既然缓存能提高效率,那项目中所有数据加入缓存岂不是更好?

4. 哪些数据可以放入缓存呢?

使用缓存时一定是数据库中数据极少发生修改时,更多用于查询这种情况。比如 省份、城市、县这些极少发生变化的信息。

5.本地缓存和分布式缓存的区别?

本地缓存:存在应用服务器内存中的数据称之为本地缓存(local cache)
分布式缓存:存储在当前应用服务器内存之外数据称之为分布式缓存(distribute cache)
在这里插入图片描述

集群:将同一种服务的多个节点放在一起共同对 系统提供服务过程称之为集群
分布式:有多个不同服务集群共同对系统提供服务这个系统称之为分布式系统(distributesystem)

6.利用mybatis自身本地缓存结合redis实现分布式缓存

首先mybatis的二级缓存存在应用服务器上,这种缓存也叫本地缓存,但是本地缓存占用了这台服务器jvm的内存,而且,本地缓存会随着jvm的结束而消失,同时,他只是存在于当前的应用服务器本身,那么日后在集群分布式系统下面它不能做到共享,如果我们用了分布式缓存,任意一个请求在任意一台服务器上查询了相应的操作,都会把它放入redis中,日后所有的查询都会从我们的redis中获取,那么日后缓存的丢失与我们当前应用服务器的重启和断电没有任何影响。
mybatis中catch标签的缓存实现
mybatis底层默认使用的是org.apache.ibatis.cache.impl.PerpetualCache实现
PerpetualCache实现代码:

public class PerpetualCache implements Cache {
   

  private final String id;

  private final Map<Object, Object> cache = new HashMap<>(); 

  public PerpetualCache(String id) {
   
    this.id = id;
  }

  @Override
  public String getId() {
   
    return id;
  }

  @Override
  public int getSize() {
   
    return cache.size();
  }

  @Override
  public void putObject(Object key, Object value) {
   
    cache.put(key, value);
  }

  @Override
  public Object getObject(Object k
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值