一. 构建spring boot项目
spring initilalizr构建简单的maven项目,如图:
点击红色圆圈标注的按钮即可得到下图所示的压缩文件:
解压后导入到eclipse中,以maven方式导入。
导入maven项目如图:
二. 使用spring-boot-starter-data-redis连接单机redis
1.在pom文件中添加spring-boot-starter-data-redis的依赖
2.在pom文件中添加jedis的依赖
3.将已有的spring-boot-starter依赖删除,加入spring-boot-starter-web
4.在application.properties文件中配置redis连接属性,如下图:
代码如下:
spring.redis.database=0
spring.redis.host=139.224.117.67
spring.redis.port=6379
spring.redis.password=666666
spring.redis.pool.max-active=200
spring.reids.pool.max-wait=-1
spring.redis.pool.max-idle=10
spring.redis.pool.min-idle=0
spring.redis.timeout=10000
5.配置RedisTemplate
package cn.weiweizhen.redisdemo.util;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;
import org.springframework.data.redis.connection.jedis.JedisClientConfiguration.JedisClientConfigurationBuilder;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import redis.clients.jedis.JedisPoolConfig;
@Configuration
@PropertySource("classpath:application.properties")
public class RedisConfig {
@Value("${spring.redis.database}")
private int database;
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;
@Value("${spring.redis.password}")
private String password;
@Value("${spring.redis.pool.max-active}")
private int maxActive;
@Value("${spring.redis.pool.max-idle}")
private int maxIdle;
@Value("${spring.redis.pool.min-idle}")
private int minIdle;
@Value("${spring.reids.pool.max-wait}")
private int maxWait;
@Bean
public JedisPoolConfig poolConfig(){
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(100);
poolConfig.setMaxWaitMillis(maxWait);
poolConfig.setMinIdle(minIdle);
poolConfig.setMaxIdle(maxIdle);
return poolConfig;
}
@Bean
public RedisStandaloneConfiguration redisStandaloneConfiguration(){
RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration();
configuration.setHostName(host);
configuration.setPassword(password);
configuration.setPort(port);
configuration.setDatabase(database);
return configuration;
}
@Bean
public JedisClientConfiguration jedisClientConfiguration(){
JedisClientConfigurationBuilder builder = JedisClientConfiguration.builder();
return builder.usePooling().poolConfig(poolConfig()).build();
}
@Bean
public JedisConnectionFactory connectionFactory(){
JedisConnectionFactory factory = new JedisConnectionFactory(redisStandaloneConfiguration(), JedisClientConfiguration.builder().build());
return factory;
}
@Bean
@SuppressWarnings("rawtypes")
public RedisTemplate redisTemplate(){
StringRedisTemplate template = new StringRedisTemplate(connectionFactory());
GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
template.setValueSerializer(jackson2JsonRedisSerializer);
return template;
}
}
6.通过控制器验证redis连接成功,并存取测试。
package cn.weiweizhen.redisdemo.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/redis")
public class TestController {
private static final Logger logger = LoggerFactory.getLogger(TestController.class);
@Autowired
RedisTemplate<String, Object> redisTemplate;
@Autowired
StringRedisTemplate stringRedisTemplate;
@RequestMapping("/set")
public void set() {
redisTemplate.opsForValue().set("test", "4321");
}
@RequestMapping("/show")
public String show(){
logger.info(redisTemplate.opsForValue().get("test").toString());
return "Hello World";
}
}
7.启动项目,在浏览器中访问
访问地址localhost:8080/redis/show,localhost:8080/redis/set