1、添加maven依賴
org.springframework.boot
spring-boot-starter-data-redis
2、配置檔案中增加redis連接配接相關資訊spring.redis.hostName=192.168.0.134
spring.redis.port=6379
spring.redis.database=0
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-23、建立一個配置類package com.example.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import redis.clients.jedis.JedisPoolConfig;
@Configuration
@EnableAutoConfiguration
public class RedisConfig {
private static Logger logger = LoggerFactory.getLogger(RedisConfig.class);
@Bean
@ConfigurationProperties(prefix="spring.redis")
public JedisPoolConfig getRedisConfig(){
JedisPoolConfig config = new JedisPoolConfig();
return config;
}
@Bean
@ConfigurationProperties(prefix="spring.redis")
public JedisConnectionFactory getConnectionFactory(){
JedisConnectionFactory factory = new JedisConnectionFactory();
JedisPoolConfig config = getRedisConfig();
factory.setPoolConfig(config);
logger.info("JedisConnectionFactory bean init success.");
return factory;
}
@Bean
public RedisTemplate, ?> getRedisTemplate(){
RedisTemplate,?> template = new StringRedisTemplate(getConnectionFactory()); //隻能對字元串的鍵值操作
System.out.println("生成,?>template:" + template);
return template;
}
@Bean(name = "LongRedisTemplate")
public RedisTemplate getRedisTemplate1(){
RedisTemplate template = new RedisTemplate(); //隻能對字元串的鍵值操作
template.setConnectionFactory(getConnectionFactory());
// 使用Jackson2JsonRedisSerialize 替換預設序列化(預設采用的是JDK序列化)
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
template.setKeySerializer(jackson2JsonRedisSerializer);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.setHashKeySerializer(jackson2JsonRedisSerializer);
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
System.out.println("生成template:" + template);
return template;
}
@Bean(name = "StringRedisTemplate")
public RedisTemplate getRedisTemplate2(){
RedisTemplate template = new RedisTemplate(); //隻能對字元串的鍵值操作
template.setConnectionFactory(getConnectionFactory());
// 使用Jackson2JsonRedisSerialize 替換預設序列化(預設采用的是JDK序列化)
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
template.setKeySerializer(jackson2JsonRedisSerializer);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.setHashKeySerializer(jackson2JsonRedisSerializer);
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
System.out.println("生成template:" + template);
return template;
}
@Bean(name = "IntegerRedisTemplate")
public RedisTemplate getRedisTemplate3(){
RedisTemplate template = new RedisTemplate(); //隻能對字元串的鍵值操作
template.setConnectionFactory(getConnectionFactory());
// 使用Jackson2JsonRedisSerialize 替換預設序列化(預設采用的是JDK序列化)
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
template.setKeySerializer(jackson2JsonRedisSerializer);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.setHashKeySerializer(jackson2JsonRedisSerializer);
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
System.out.println("生成template:" + template);
return template;
}
}4、使用及測試A、測試注入不同類型的模闆根據 @Resource 注解import java.util.Set;
import javax.annotation.Resource;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SetOperations;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RedisController {
@Resource(name = "StringRedisTemplate")
private RedisTemplate stringRedisTemplate;
@Resource(name = "LongRedisTemplate")
private RedisTemplate longRedisTemplate;
@Resource(name = "IntegerRedisTemplate")
private RedisTemplate integerRedisTemplate;
@RequestMapping(value = "/redis")
public String testRedis() {
System.out.println("stringRedisTemplate:" + stringRedisTemplate);
System.out.println("longRedisTemplate:" + longRedisTemplate);
System.out.println("integerRedisTemplate:" + integerRedisTemplate);
testStringRedis();
testLongRedis();
testIntegerRedis();
return "成功!";
}
private void testStringRedis() {
SetOperations set = stringRedisTemplate.opsForSet(); //儲存Set
set.add("set1","22");
set.add("set1","33");
set.add("set1","33");
Set resultSet =stringRedisTemplate.opsForSet().members("set1"); //擷取Set
System.out.println("resultSet:"+resultSet);
}
private void testLongRedis() {
SetOperations set = longRedisTemplate.opsForSet();
set.add("set2",22L);
set.add("set2",22L);
set.add("set2",23L);
Set resultSet =longRedisTemplate.opsForSet().members("set2");
System.out.println("resultSet:"+resultSet);
}
private void testIntegerRedis() {
SetOperations set = integerRedisTemplate.opsForSet();
set.add("set3",222);
set.add("set3",333);
set.add("set3",555);
Set resultSet =integerRedisTemplate.opsForSet().members("set3");
System.out.println("resultSet:"+resultSet);
}
}B、測試例子(測試)Set、Hash、[email protected](name = "IntegerRedisTemplate")
private RedisTemplate integerRedisTemplate;
@RequestMapping(value = "/redis")
public String testRedis() {
testIntegerSetRedis();
testIntegerMapRedis();
testIntegerValueRedis();
return "成功!";
}
private void testIntegerSetRedis() {
System.out.println();
System.out.println("測試Set結構");
SetOperations set = integerRedisTemplate.opsForSet(); //添加Set
set.add("set1",22);
set.add("set1",33);
set.add("set1",55);
Set resultSet1 =integerRedisTemplate.opsForSet().members("set1"); //擷取Set
Set resultSet5 =integerRedisTemplate.opsForSet().members("set100"); //擷取為空的情況
System.out.println("resultSet5:"+resultSet5);
System.out.println("resultSet1:"+resultSet1);
set.remove("set1", 22); //删除元素
Set resultSet2 =integerRedisTemplate.opsForSet().members("set1"); //擷取Set
System.out.println("删除後:resultSet2:"+resultSet2);
}
private void testIntegerMapRedis() {
System.out.println();
System.out.println("測試Hash結構");
HashOperations redisMap = integerRedisTemplate.opsForHash(); //添加Map
Map map = new HashMap();
map.put("goodsId", 12345);
map.put("shopId", 52341);
map.put("coupon", 3232);
redisMap.putAll("hashMapTest", map);
Map resultSet1 =integerRedisTemplate.opsForHash().entries("hashMapTest"); //擷取Map
System.out.println("resultSet1:"+resultSet1);
redisMap.delete("hashMapTest", "goodsId"); //删除key
Map resultSet2 =integerRedisTemplate.opsForHash().entries("hashMapTest"); //擷取Map
System.out.println("删除後:resultSet2:"+resultSet2);
}
private void testIntegerValueRedis() {
System.out.println();
System.out.println("測試String-ValueOperations結構");
ValueOperations redisValue1 = integerRedisTemplate.opsForValue();
redisValue1.set("abcde", 123444); //設定
Integer result1 = redisValue1.get("abcde"); //擷取
System.out.println("result:" + result1);
BoundValueOperations redisValue2 = integerRedisTemplate.boundValueOps("abcde");
redisValue2.set(6666); //設定
Integer result2 = redisValue2.get(); //擷取
System.out.println("result:" + result2);
integerRedisTemplate.delete("abcde");
BoundValueOperations redisValu3 = integerRedisTemplate.boundValueOps("abcde");
System.out.println("删除後:result3:" + redisValu3.get());
}控制台列印結果:測試Set結構resultSet5:[]resultSet1:[22, 33, 55]删除後:resultSet2:[33, 55]
測試Hash結構resultSet1:{goodsId=12345, coupon=3232, shopId=52341}删除後:resultSet2:{shopId=52341, coupon=3232}
測試String-ValueOperations結構result:123444result:6666删除後:result3:null