springboot整合redis详细步骤

摘要:
org.springframework.boot<弹簧启动机数据redis</artifactId>阿里巴巴<fastjson<版本>1.2.47<>&书信电报;附属国;

一: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详细步骤》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇浏览器自定义协议在静态方法中获取properties /yml 配置文件中的信息下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ASP.NET Core扩展库之实体映射

在分层设计模式中,各层之间的数据通常通过数据传输对象(DTO)来进行数据的传递,而大多数情况下,各层数据的定义结构大同小异,如何在这些定义结构中相互转换,之前我们通过使用AutoMapper库,但AutoMapper功能庞大,使用较为复杂,而在很多场景下,可能我们只需要一些基础的对象映射功能,那么此时你可以选择扩展库中的轻量级AutoMapper实现。 实...

【GPU编解码】GPU硬编码 (转)

一、OpenCV中的硬编码 OpenCV2.4.6中,已实现利用GPU进行写视频,编码过程由cv::gpu::VideoWriter_GPU完成,其示例程序如下。 1 int main(int argc, const char* argv[]) 2 { 3 if (argc != 2) 4 { 5 st...

django数据库的增删改查

正常启动服务安装数据库cmd命令:python manage.py makemigrations 创建用户 在pxm里面会有一个py文件..这就是生成了表结构cmd命令:python manage.py migrate 自带的一些表 导入这就是正向导入数据库 反向导入数据库:python manage.py inspectdb > son1/mode...

20150916自动化测试之Appinum For Android(环境搭建之下载更新安装AndroidSDK包)

  在经历一个多星期的延迟后,终究是运气极好,解决了Android SDK更新时遇到的google访问问题   遇到的问题:      解决方法:   1.启动 Android SDK Manager ;  2.打开主界面,选择Tools->Options;  3.在弹出的窗口中,代理服务器输入mirrors.neusoft.edu.cn,端口:80...

tinyhttpd源码分析

  我们经常使用网页,作为开发人员我们也部署过httpd服务器,比如开源的apache,也开发过httpd后台服务,比如fastcgi程序,不过对于httpd服务器内部的运行机制,却不是非常了解,前几天看见tinyhttpd,只有短短500行左右的代码,就实现了一个简单的httpd服务器的基本功能,这种tiny程序,其实对于我们了解基本核心有一定的帮助,可...

ehcache 使用

引用 :http://blog.sina.com.cn/s/blog_46d5caa40100ka9z.html 在开发高并发量,高性能的网站应用系统时,缓存Cache起到了非常重要的作用。本文主要介绍EHCache的使用,以及使用EHCache的实践经验。笔者使用过多种基于Java的开源Cache组件,其中包括OSCache、JBossCache、EHC...