目录
一.基础知识
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-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