一:springboot整合redis

redis版本:3.0.0

运行环境:linux

1.安装redis

1.1安装gcc
yum install gcc-c++
1.2解压redis.3.0.0.tar.gz压缩包
tar -zxvf redis-3.0.0.tar.gz
1.3进入解压后的目录进行编译
cd redis-3.0.0
make
1.4将redis安装到指定目录
make PREFIX=/usr/local/redis install
1.5启动redis
./redis-server ctrl+c停止
1.6复制redis.conf到/usr/local/redis/bin/
cp redis.conf /usr/local/redis/bin/
1.7编辑复制的redis.conf
将daemonize no 改为daemonize yes
1.8启动redis服务(6379)
./redis-server redis.conf
ps aux|grep redis #查看redis是否启动
./redis-cli shutdown #关闭redis服务

2.springboot整合spring data redis

spring data redis是属于spring data下的一个模块.作用就是简化对于redis的操作.

2.1修改pom文件添加redis依赖

<!-- redis的springboot启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<!-- 1.5的版本默认采用的连接池技术是jedis 2.0以上版本默认连接池是lettuce, 在这里采用jedis,所以需要排除lettuce的jar -->
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 添加jedis客户端 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<!-- 将作为Redis对象序列化器 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>

2.2编写springdataredis的配置类

@Configuration
public class RedisConfig {
//1.创建JedisPoolConfig对象,在该对象中完成一些连接池配置
//2.创建JedisConnectionFactory对象,配置redis连接信息
//@ConfigurationProperties(prefix="spring.redis"):会将前缀相同的内容创建一个实体
//3.创建RedisTemplate:用于执行Redis操作方法
@Bean
public RedisTemplate<String, Object> getRedisTemplate(JedisConnectionFactory factory){
RedisTemplate<String, Object> template = new RedisTemplate<>();
//关联连接工厂
template.setConnectionFactory(factory);
//为key设置序列化
template.setKeySerializer(new StringRedisSerializer());
//为value设置序列化
template.setValueSerializer(new StringRedisSerializer());
return template;
}
}

2.3编写测试代码

2.3.1修改pom文件添加test依赖

<!-- test的springboot启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>

2.3.2编写测试类

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes=Application.class) //Application是springboot启动类的类名
public class RedisTest {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
//添加一个字符串
@Test
public void testSet() {
this.redisTemplate.opsForValue().set("key", "测试redis整合");
}
//获取一个字符串
@Test
public void testGet() {
String value = (String)this.redisTemplate.opsForValue().get("key");
System.out.println(value);
}
}

3.提取redis的配置信息

3.1在src/main/resource/目录下新建一个配置文件:application.yaml

@ConfigurationProperties(prefix="spring.redis"):会将前缀相同的内容创建一个实体

# redis配置
spring:
redis:
# redis数据库索引(默认为零)
database: 0
# host是自己虚拟机的ip地址
host: 192.168.91.100
port: 6379
password:
jedis:
pool:
# 连接池最大连接数(使用负值表示没有限制)
max-active: 8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1
# 连接池最大空闲连接
max-idle: 8
# 连接池最小空闲连接
min-idle: 0
# 连接超时时间(毫秒)
timeout: 10000

4.spring Date Redis操作实体对象

4.1创建实体类User

public class User implements Serializable{
private Integer id;
private String name;
private String age;
public User() {
// TODO Auto-generated constructor stub
}
public User(Integer id, String name, String age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}

4.2测试代码

//添加user实体类
@Test
public void testSetUser() {
User user = new User();
user.setId(1);
user.setName("zlg");
user.setAge("18");
//重新设置序列化器
this.redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
this.redisTemplate.opsForValue().set("user", user);
}
//根据key获取实体类对象
@Test
public void testGetUser() {
//反序列化,重新设置序列化器
this.redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
User user = (User)this.redisTemplate.opsForValue().get("user");
System.out.println(user);
}

5.spring data redis以json格式存储实体对象

5.1测试代码

//3.基于json格式存user对象
@Test
public void testSetUserUseJson() {
User user = new User();
user.setId(1);
user.setName("zlg");
user.setAge("18");
//重新设置序列化器
this.redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(User.class));
this.redisTemplate.opsForValue().set("user_json", user);
}
//基于json格式取对象
@Test
public void testGetUserUseJson() {
//反序列化
this.redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(User.class));
User user = (User)this.redisTemplate.opsForValue().get("user_json");
System.out.println(user);
}

三:Springboot整合Redis的更多相关文章

  1. SpringBoot整合Redis、ApachSolr和SpringSession

    SpringBoot整合Redis.ApachSolr和SpringSession 一.简介 SpringBoot自从问世以来,以其方便的配置受到了广大开发者的青睐.它提供了各种starter简化很多 ...

  2. SpringBoot整合Redis及Redis工具类撰写

            SpringBoot整合Redis的博客很多,但是很多都不是我想要的结果.因为我只需要整合完成后,可以操作Redis就可以了,并不需要配合缓存相关的注解使用(如@Cacheable). ...

  3. springboot整合redis——redisTemplate的使用

    一.概述 相关redis的概述,参见Nosql章节 redisTemplate的介绍,参考:http://blog.csdn.net/ruby_one/article/details/79141940 ...

  4. SpringBoot整合Redis使用Restful风格实现CRUD功能

    前言 本篇文章主要介绍的是SpringBoot整合Redis,使用Restful风格实现的CRUD功能. Redis 介绍 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-valu ...

  5. Redis-基本概念、java操作redis、springboot整合redis,分布式缓存,分布式session管理等

    NoSQL的引言 Redis数据库相关指令 Redis持久化相关机制 SpringBoot操作Redis Redis分布式缓存实现 Resis中主从复制架构和哨兵机制 Redis集群搭建 Redis实 ...

  6. SpringBoot整合Redis实现常用功能

    SpringBoot整合Redis实现常用功能 建议大小伙们,在写业务的时候,提前画好流程图,思路会清晰很多. 文末有解决缓存穿透和击穿的通用工具类. 1 登陆功能 我想,登陆功能是每个项目必备的功能 ...

  7. SpringBoot 整合 Redis缓存

    在我们的日常项目开发过程中缓存是无处不在的,因为它可以极大的提高系统的访问速度,关于缓存的框架也种类繁多,今天主要介绍的是使用现在非常流行的NoSQL数据库(Redis)来实现我们的缓存需求. Spr ...

  8. SpringBoot系列十:SpringBoot整合Redis

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合 Redis 2.背景 Redis 的数据库的整合在 java 里面提供的官方工具包:jed ...

  9. springboot整合redis(注解形式)

    springboot整合redis(注解形式) 准备工作 springboot通常整合redis,采用的是RedisTemplate的形式,除了这种形式以外,还有另外一种形式去整合,即采用spring ...

随机推荐

  1. 932. Beautiful Array

    For some fixed N, an array A is beautiful if it is a permutation of the integers 1, 2, ..., N, such ...

  2. lua 5.3 英文手册 google机器翻译版

    LUA Lua 5.3参考手册作者:Roberto Ierusalimschy,Luiz Henrique de Figueiredo,Waldemar Celes 版权所有©2015-2018 Lu ...

  3. css3动画(animation)效果3-正方体合成

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. AHOI2005航线规划 bzoj1969(LCT缩点)

    题目描述 对Samuel星球的探险已经取得了非常巨大的成就,于是科学家们将目光投向了Samuel星球所在的星系——一个巨大的由千百万星球构成的Samuel星系. 星际空间站的Samuel II巨型计算 ...

  5. [Objective-C语言教程]基本语法(4)

    前面已经看到了Objective-C程序的基本结构,因此很容易理解Objective-C编程语言的其他基本构建块. Objective-C令牌 Objective-C程序由各种令牌组成,令牌可以是关键 ...

  6. shell 常用命令集合

    grep -i 忽略大小写 -I 跳过二进制文件 -c 计算数量 -n 显示行号 -R 递归 -v 不匹配某个关键字 常用组合命令 grep -iIRn keyword * 搜索含有该 keyword ...

  7. springMVC引入js,css文件404

    在web.xml中配置静态资源文件过滤 <!--静态文件引入--> <servlet-mapping> <servlet-name>default</serv ...

  8. 队列优化dijsktra(SPFA)的玄学优化

    转载:大佬博客 最近想到了许多优化spfa的方法,这里想写个日报与大家探讨下 前置知识:spfa(不带任何优化) 由于使用较多 STLSTL ,本文中所有代码的评测均开启 O_2O2​ 优化 对一些数 ...

  9. 编程开发之--Oracle数据库--存储过程使用动态参数绑定(3)

    1.动态参数绑定,可以实现动态的执行不同的sql --创建包 create or replace PACKAGE MYPACKAGE AS type empcursor is ref cursor; ...

  10. node爬取页面元素

    /** * Created by on 2018/12/25. */const http = require("https");const fs = require('fs'); ...