三:Springboot整合Redis
一: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的更多相关文章
- SpringBoot整合Redis、ApachSolr和SpringSession
SpringBoot整合Redis.ApachSolr和SpringSession 一.简介 SpringBoot自从问世以来,以其方便的配置受到了广大开发者的青睐.它提供了各种starter简化很多 ...
- SpringBoot整合Redis及Redis工具类撰写
SpringBoot整合Redis的博客很多,但是很多都不是我想要的结果.因为我只需要整合完成后,可以操作Redis就可以了,并不需要配合缓存相关的注解使用(如@Cacheable). ...
- springboot整合redis——redisTemplate的使用
一.概述 相关redis的概述,参见Nosql章节 redisTemplate的介绍,参考:http://blog.csdn.net/ruby_one/article/details/79141940 ...
- SpringBoot整合Redis使用Restful风格实现CRUD功能
前言 本篇文章主要介绍的是SpringBoot整合Redis,使用Restful风格实现的CRUD功能. Redis 介绍 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-valu ...
- Redis-基本概念、java操作redis、springboot整合redis,分布式缓存,分布式session管理等
NoSQL的引言 Redis数据库相关指令 Redis持久化相关机制 SpringBoot操作Redis Redis分布式缓存实现 Resis中主从复制架构和哨兵机制 Redis集群搭建 Redis实 ...
- SpringBoot整合Redis实现常用功能
SpringBoot整合Redis实现常用功能 建议大小伙们,在写业务的时候,提前画好流程图,思路会清晰很多. 文末有解决缓存穿透和击穿的通用工具类. 1 登陆功能 我想,登陆功能是每个项目必备的功能 ...
- SpringBoot 整合 Redis缓存
在我们的日常项目开发过程中缓存是无处不在的,因为它可以极大的提高系统的访问速度,关于缓存的框架也种类繁多,今天主要介绍的是使用现在非常流行的NoSQL数据库(Redis)来实现我们的缓存需求. Spr ...
- SpringBoot系列十:SpringBoot整合Redis
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合 Redis 2.背景 Redis 的数据库的整合在 java 里面提供的官方工具包:jed ...
- springboot整合redis(注解形式)
springboot整合redis(注解形式) 准备工作 springboot通常整合redis,采用的是RedisTemplate的形式,除了这种形式以外,还有另外一种形式去整合,即采用spring ...
随机推荐
- 初学python - 使用pip安装扩展库
cmd pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PyMySQL - 使用清华镜像下载PyMySQL pip python包管理工 ...
- 【OCP-12c】CUUG最新考试原题整理及答案(071-10)
10.(5-6) choose the best answer:Examine the structure of the EMPLOYEES table:There is a parent/child ...
- [ActionSprit 3.0] FMS客户端与服务器端交互(传参)
客户端as: import flash.net.NetConnection; import flash.events.NetStatusEvent; var nc:NetConnection = ne ...
- 用JS实现汉字转拼音
<!DOCTYPE HTML> <html> <head> <title>用JS实现汉字转拼音</title> <meta chars ...
- 1.jQuery入口函数
<!--注意,如果需要对ie67兼容,我们可以使用原生低版本的jquery 比如说jquery-1.12.4.js--> <!DOCTYPE html> <html la ...
- 51 Nod 1007 dp
1007 正整数分组 1 秒 131,072 KB 10 分 2 级题 将一堆正整数分为2组,要求2组的和相差最小. 例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1, ...
- Ubuntu14.04安装libusb
https://www.cnblogs.com/ettie999/p/8142973.html libuvc是一个跨平台的USB视频设备库,建立在libusb之上. 它能够对导出标准USB视频类(UV ...
- js 的常用方法和对象
每日分享: 加油!你一定可以!你是最牛逼的!!!-------------------------------------------------------------------------- - ...
- Go语言fmt包详解
格式化输出函数 fmt包含有格式化I/O函数,类似于C语言的printf和scanf.格式字符串的规则来源于C,但更简单一些 1.print和println方法 print输出给定的字符串,如果是数值 ...
- 匈牙利算法、KM算法
PS:其实不用理解透增广路,交替路,网上有对代码的形象解释,看懂也能做题,下面我尽量把原理说清楚 基本概念 (部分来源.部分来源) 二分图: 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相 ...