首页 > 数据库 >Redis缓存和MyBaits整合

Redis缓存和MyBaits整合

时间:2024-03-17 23:29:20浏览次数:27  
标签:缓存 articleData Redis 数据库 redis MyBaits redisTemplate

目录

一.基础知识

1.Redis缓存

2.特点

二.使用Redis

1. 下载redis

2.安装Redis Desktop Manager软件

3.连接Redis

三.Redis缓存和MyBaits整合

1.加入依赖

2.配置文件

3.配置类

4.创建数据库和实体类

5.使用

四.练习


一.基础知识

1.Redis缓存

缓存(*Cache), 就是数据交换的*缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码。缓存数据存储于代码中,而代码运行在内存中,内存的读写性能远高于磁盘,缓存可以大大降低用户访问并发量带来的服务器读写压力;

Redis 是以key-value形式存储,和传统的关系型数据库不一样。不一定遵循传统数据库的些基本要求。 Java中数据结构:String,数组,list,set map… Redis提供了很多的方法,可以用来存取各种数据结构的数据。

2.特点

1.数据保存在内存,存取速度快,并发能力强
2.它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、 zset(sorted set --有序集合)和hash(哈希类型)。
3.redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库(如MySQL)起到很好的补充作用。
4.它提供了Java,C/C++,C#,PHP,JavaScript等客户端,使用很方便。
5.Redis支持集群(主从同步、负载均衡)。数据可以主服务器向任意数量从的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。
6.支持持久化,可以将数据保存在硬盘的文件中
7.支持订阅/发布(subscribe/publish)功能 QQ群
1、数据存放:存放到内存中,还能不定期持久化到磁盘。存取速度快,并发能力强,断电后数据不丢失。
2、支持Value类型更多。
3、多种客户端(语言 java php c# js)
4、支持集群来扩展空间 8G+8G+16G
5、开源(免费还有很多人维护)

二.使用Redis

1. 下载redis

Redis下载路径

下载后解压,打开文件夹中的redis-server程序文件

启动页面

2.安装Redis Desktop Manager软件

此软件为Redis的可视化管理软件。安装后页面

3.连接Redis

需要将可视化工具和Redis进行连接

连接后即可看到名为test的缓存,默认有16个数据库

三.Redis缓存和MyBaits整合

1.加入依赖

方法一:可以在创建项目时,加入Redis依赖。

方法二:

在pom文件中加入

 <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-data-redis</artifactId>
 </dependency>

2.配置文件

前提:将redis下载好并启动,安装好Redis Desktop Manager软件,并连接好redis。

在.yml文件中写配置文件 此配置文件不能写在配置文件的最后。spring如果有,则不写spring

spring: 
  data:
    redis:
      #地址 127.0.0.1
      host: 127.0.0.1
      #接口6379
      post: 6379
      #指明第几个数据库
      database: 0

3.配置类

固定写法,必须配置

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //修改json格式化处理对象 原生的是 JdkSerializationRedisSerializer
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        redisTemplate.setDefaultSerializer(jackson2JsonRedisSerializer);
        return redisTemplate;
    }
}

4.创建数据库和实体类

create database my_sql;
use my_sql;

CREATE TABLE `t_article`
(
    `id`      int(20) NOT NULL AUTO_INCREMENT COMMENT '文章id',
    `title`   varchar(200) DEFAULT NULL COMMENT '文章标题',
    `content` varchar(200) COMMENT '文章内容',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 2
  DEFAULT CHARSET = utf8;
INSERT INTO `t_article` VALUES ('1', 'Spring Boot基础入门', '从入门到精通讲解...');
INSERT INTO `t_article` VALUES ('2', 'Spring Cloud基础入门', '从入门到精通讲解...');

@Data
public class Article {
   private int id;
   private String title;
   private String content;
}

5.使用

使用前先取出RedisTemplate

@Autowired
    RedisTemplate redisTemplate;

存值:

set存值,使用键值对方式进行存值

redisTemplate.opsForValue().set("setname", "This is Article(存值)");

此时缓存中也有存进去的值。

取值:

需要根据键,来取出值

redisTemplate.opsForValue().get("setname");

四.练习

写一个程序,取值,如果缓存中有值,则从缓存中取,如果缓存中没值,则从数据库中取值,放入缓存中。始终保持所有值从缓存中取。

答案:

//从缓存中取数据库数据完整步骤
    @RequestMapping("ArticleData")
    public List<Article> ArticleData() {
        //首先判断缓存中是否存在key
        List<Article> articleData = (List<Article>) redisTemplate.opsForValue().get("articleData");
        if (articleData == null || articleData.size() == 0) {
            //如果没有则从数据库中取出存进缓存中
            List<Article> articles = articleService.getArticles();
            redisTemplate.opsForValue().set("articleData", articles);
            //最后从缓存中取出
            return (List<Article>) redisTemplate.opsForValue().get("articleData");
        } else {
            //如果有,则从缓存中直接取
            return articleData;
        }
    }

标签:缓存,articleData,Redis,数据库,redis,MyBaits,redisTemplate
From: https://blog.csdn.net/fyr6103032003/article/details/136762285

相关文章

  • BcLinux-Redis-集群(cluster)模式安装配置
    IP:192.168.0.28081、8082IP:192.168.0.3 8081、8082IP:192.168.0.4 8081、80821、三个节点同样操作[root@server-1setup]#yuminstalltcl或者:wgethttp://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gztarxzvftcl8.6.1-src.tar.gz-C/home/local/cd/home/loc......
  • 14_redis哨兵机制
    redis哨兵(sential)哨兵人巡查监控后后台master主机是否故障,如果故障了根据投票数自动将某一个从机转换为主机,继续对外提供服务。哨兵的作用监控redis主机的运行状态,包括主机master和slave。当主机宕机后,能自动将从机切slave换成新的主机master注意哨兵不使用集群,仅仅是和......
  • Redis 线程模型
      Redis是一个高性能的键值存储系统,它的线程模型和传统的多线程服务器模型有所不同。Redis主要使用单线程来处理命令请求,但在某些操作和场景中会使用多线程。1.单线程架构架构说明:Redis的主要操作,包括读取、写入、保存数据等,都是在一个单线程中执行的。这意味着在任......
  • mysql与redis数据测试
    题目要求1.新建一张user表,在表内插入10000条数据。2.①通过jdbc查询这10000条数据,记录查询时间。②通过redis查询这10000条数据,记录查询时间。3.再次查询这一万条数据,要求根据年龄进行排序,mysql和redis各实现一次。4.上面排序后的前5人可进行抽奖,每人有一次抽奖机会,抽......
  • 13_redis复制机制
    Redis复制机制(replication)概述Redis复制机制就是主从复制,master数据库以写为主,slave数据库以读为主,当master数据发生变化时,自动的将新的数据异步同步到其他slave数据库。作用读写分离容灾恢复数据备份水平扩容支持高并发怎么用一般只配置(从)读库,不配置(主)写库(一主多从)。m......
  • [redis] 基于Docker安装Redis
    0序环境信息OS:CENTOS7.9Docker:25.0.4Redis:7.2.47.2.4版本比较新,也可尝试6.0.8等版本1安装步骤Step0安装docker略。可参见:[Docker]基于CENTOS7安装Docker环境-博客园/千千寰宇基于Docker安装MYSQL/Step1安装docker环境-博客园/千千......
  • arp动态表缓存清除
    一、arp表里清除表状态:1,Delay:请求arp2,Reachab:响应arp3,Stale此状态下,待gc_stale_time超时后,准备gc_interval定期清理二、限制条件base_reachable_time:后变为Stalegc_thresh1:数量限制gc_stale_time:时间限制gc_interval:定期间隔三,测试在断开连接,经测试发现即使......
  • 华为OD机试 C++ -文件缓存系统
    文件缓存系统前言:本专栏将持续更新互联网大厂机试真题,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于大厂机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:[email protected];备注:CSDN。题目描述请设计一个文件缓......
  • 【转载】Redis -- IO多路复用及redis6的多线程
    都知道redis是通过单线程+io多路复用来避免并发问题的,然后在redis6的时候redis引入了多线程,这里就来详细说说IO多路复用模型以及redis的多线程。Redis的I/O多路复用模型有效的解决单线程的服务端,使用不阻塞方式处理多个client端请求问题。在看I/O多路复用知识之前,我们先来......
  • 华为OD机试Js - 文件缓存系统
    文件缓存系统前言:本专栏将持续更新互联网大厂机试真题,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于大厂机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:[email protected];备注:CSDN。题目描述请设计一个文件缓......