Redis缓存和MyBaits整合

目录

一.基础知识

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;
        }
    }

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随便1007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值