一: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. 201621123023《Java程序设计》第4周学习总结

    一.本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 继承.多态.覆盖.重载 1.2 尝试使用思维导图将这些关键词组织起来.注:思维导图一般不需要出现过多的字. 二.书面作业 1. 面 ...

  2. iOS应用开发权限请求处理

    1.写在前面 APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事: 那如何提高APP获取iOS系统权限的通过率呢?有以下几种方式: 1 ...

  3. [AIR] AS3读取txt文档

    package { import flash.display.Sprite; import flash.events.Event; import flash.filesystem.File; impo ...

  4. 小记 Linux 之 Vim

    小记 Linux 之 Vim 使用vim用来进行文本流查询,是非常重要的部分. 技巧一:使用 '#' 系统将列出文档相同字符,在代码时很重要. 技巧二:使用 ']I' 具体操作是先使用 ? 或 \ 进 ...

  5. Oracle数据库count的一些操作

    --统计数量 select count(*) from table; --统计某一列的数量(去空) select count(col) from table; --统计某一列的值大于或小于另一个值的数 ...

  6. js判断浏览器类型以及语言

    1.检查是否是移动端(Mobile).ipad.iphone.微信.QQ等 <script type="text/javascript"> //判断访问终端 var b ...

  7. CH2601 电路维修(双端队列bfs)建图恶心

    CH2601 电路维修 双端队列bfs,其实就是因为只有0和1所以可以直接2维护队列单调性(和优先队列一个道理) 建图的过程需要仔细斟酌(想一想id为什么这么写) 还有,空间要开够(很玄学),我一开始 ...

  8. Intellij IDEA 封装Jar包(提示错误: 找不到或无法加载主类)

    封装的过程如下: 然后准备打包 选择Build或者ReBuild即可. 但这样就会引起开始第一个图的问题.提示无法加载主类,另外一个情况就是所有的外部第三方jar包都被封装到一个jar包里面了. 那么 ...

  9. USART列子

    #include "stm32f10x.h" void USART_INit(void) { GPIO_InitTypeDef GPIO_Initstructe; USART_In ...

  10. MyEclipse配置,每次打开server中都没有weblogic

    最近在myeclipse新配了个weblogic,结果每次打开myeclipse在server中都看不到weblogic,得重新去配置页面走一遭才能出现.很麻烦. 后来在网上找了找,找到一个办法: 在 ...