2分钟

课程背景

实验预计耗时:45 分钟

1. 课程背景

1.1 课程目的

在个人的工作中,经常会涉及查询数据库中数据的内容,然而,如果每次获取数据都需要访问数据库会对数据库造成很大的负担。Redis 作为一个基于内存的高性能key-value数据库,具有纯内存操作、处理读写速度快、支持存储多种数据结构、对数据有序存储等特点。开发人员可以把一些频繁查询但变动比较低的数据放入 Redis 中,使用 Redis 作为缓冲区,不仅可以提高查询速度,还能减轻数据库压力。本课程通过使用 Springboot 框架整合 Redis,并将该程序放入腾讯云服务器 CVM 中运行,实现 Redis 的二级缓存功能。

1.2 课前知识准备

1.相关概念

  • 环境准备相关
    • 静态网站:网站仅由 HTML,CSS,JavaScript 等前端文件组成的网站。静态网站没有与后端的数据交互,功能简单,要修改网站内容只能修改静态文件。
    • java 开发环境:要编写 java 程序,必须先搭建好 java 的开发环境。其中包括 JDK(java 开发工具)的安装、 path 环境变量和 classpath 的配置等。
    • IntelliJ IDEA:编写 java 程序的编辑工具,在业界被公认为最好的 java 开发工具,尤其在智能代码助手、代码自动提示、重构、J2EE 支持、各类版本工具(git、svn 等)、JUnit、CVS 整合、代码分析、创新的 GUI 设计等方面的功能可以说是超常的。
  • 通用技术相关
    • Redis:Redis 是一个 key-value 存储系统,它支持的 value 类型相对较多,包括 string、list、set 和 zset,这些数据都支持 push/pop/add/remove 及交并补等操作,而且这些操作都是原子性的,在此基础上,Redis 支持各种不同方式的排序。为了保证效率,数据是缓存在内存中的,Redis 会周期性的把数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave 同步。
  • 腾讯云产品相关
    • CVM:腾讯云服务器 CVM(Cloud Virtual Machine)是腾讯云提供的可扩展的计算服务。使用 CVM 避免了使用传统服务器时需要预估资源用量及前期投入,帮助用户在短时间内快速启动任意数量的云服务器并即时部署应用程序。腾讯云 CVM 支持用户自定义一切资源:CPU、内存、硬盘、网络、安全等等,并可以在需求发生变化时轻松地调整它们。
    • TencentDB for MySQL:云数据库 MySQL(TencentDB for MySQL)是腾讯云基于开源数据库 MySQL 专业打造的高性能分布式数据存储服务,让用户能够在云中更轻松地设置、操作和扩展关系数据库。
    • TencentDB for Redis:云数据库 Redis(TencentDB for Redis)是由腾讯云提供的兼容 Redis 协议的缓存数据库,具备高可用、高可靠、高弹性等特征。最大支持 4TB 的存储容量,千万级的并发请求,可满足业务在缓存、存储、计算等不同场景中的需求。

2.相关原理

  • 二级缓存原理:我们知道 MyBatis 提供了一级缓存来减轻数据库的压力,但是一级缓存是一个 SqlSession(会话)级别的缓存,这也就意味着一级缓存的适用范围比较小。在一级缓存的基础上,MyBatis 提供了二级缓存机制,二级缓存是一个 namespace 级别的缓存,相对于一级缓存而言,二级缓存允许跨 SqlSession 工作,因此二级缓存的作用范围更大。每个 SqlSession 在执行查询操作的时候,都会将查询的结果放在当前会话的一级缓存中。如果当前会话关闭,一级缓存中的数据会被保存在二级缓存中。因此二级缓存是在一级缓存的基础上进行扩展的,不同的 namespace 查出的数据都会将数据存在自己对应的缓存中,这些缓存信息使用Map存储。
  • Redis 原理:Redis 支持丰富的数据类型,最为常用的数据类型主要由五种:String、Hash、List、Set和Sorted Set。Redis 通常将数据存储于内存中,或被配置为使用虚拟内存。Redis 有一个很重要的特点就是它可以实现持久化数据,通过两种方式可以实现数据持久化:使用 RDB 快照的方式,将内存中的数据不断写入磁盘;或使用类似 MySQL 的 AOF 日志方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。