三: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 ...
随机推荐
- 圆角标题title
Html代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- 关于前后台DOM树应用
Dom对象是在程序开发中很实用而且经常会应用到的技术,通过Dom对象可以传递具有树结构的对象,有利用前台页面的诸如树的显示和相应值的处理,本文从两个方面全面解析Dom对象的应用,一是从后台得到完整的D ...
- Vim查找与替换
\c 忽略大小写 \C 强制区分大小写 \v 除了_.字母.数字以为的所有字符都当做具有特殊含义的字符 \V 只有反斜杠有特殊含义 %s///gn 统计某个词出现的次数 替换的flag g 全局范围执 ...
- TCP的成块数据流
TCP使用滑动窗口协议的另一种方式来实现流量控制.该协议允许发送方在停止并等待确认之前可以连续发送多个分组.由于发送方不必每发送一个分组就停下来等确认,因此该协议可以加速数据的传输. 一.滑动窗口  ...
- python3入门之赋值语句介绍
获得更多资料欢迎进入我的网站或者 csdn或者博客园 本节主要介绍赋值语句,以及几种特殊的赋值.下面附有之前的文章: python3入门之print,import,input介绍 python入门之字 ...
- Quartz.Net_表达式参考说明
字段名 允许的值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日 1-31 , - * ? / L W C 月 1-12 , - * / ...
- java中的Lamdba表达式和Stream
基于JDK 1.8 1.循环: // 以前的循环方式 for (String player : players) { System.out.print(player + "; ") ...
- 服务器重启后Jenkins项目部分丢失问题解决方法
1.进入webapps/jenkins/WEB-INF目录下,vi web.xml 2.修改 HUDSON_HOME下的value为/root/.jenkins 3.重启Jenkins:http:/ ...
- Paxos算法的通俗理解(转)
维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递且具有高度容错特性 ...
- 基于python实现Oracle数据库连接查询操作
使用python语言连接Oracle数据库配置 #coding:utf-8 import cx_Oracle as oracle db=oracle.connect('root/123456@192. ...