一、redis的jar包配置:在pom中配置
<!-- Redis --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.7.6.RELEASE</version> </dependency> |
二、redis工厂及redis的bean配置
RedisConnectionFactoryConfig工厂java文件
package com.zhb.cms.sdk.config;
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.RedisConnectionFactory; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; @Configuration @ConfigurationProperties(prefix="spring.redis")//获取配置文件中的spring-redis配置 public class RedisConnectionFactoryConfig { //定义配置中心中redis配置的参数 private String host; private String userHost; private int port; private int userPort; private int database; private int userDatabase; //定义用户中心的redis连接工厂bean @Bean(name="userRedisConnectionFactory") public RedisConnectionFactory userRedisConnectionFactory(){ JedisConnectionFactory jcf=new JedisConnectionFactory(); jcf.setHostName(userHost); jcf.setDatabase(userDatabase); jcf.setPort(userPort); jcf.setUsePool(true); return jcf; } //定义主数据的redis连接工厂bean @Bean(name="redisConnectionFactory") public RedisConnectionFactory custRedisConnectionFactory(){ JedisConnectionFactory jcf=new JedisConnectionFactory(); jcf.setHostName(host); jcf.setDatabase(database); jcf.setPort(port); jcf.setUsePool(true); return jcf; } public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String getUserHost() { return userHost; } public void setUserHost(String userHost) { this.userHost = userHost; } public int getPort() { return port; } public void setPort(int port) { this.port = port; } public int getUserPort() { return userPort; } public void setUserPort(int userPort) { this.userPort = userPort; } public int getDatabase() { return database; } public void setDatabase(int database) { this.database = database; } public int getUserDatabase() { return userDatabase; } public void setUserDatabase(int userDatabase) { this.userDatabase = userDatabase; } } |
基于redisTemplate的RedisConfig配置java文件
package com.zhb.cms.sdk.config;
import java.lang.reflect.Method;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cache.CacheManager; import org.springframework.cache.interceptor.KeyGenerator; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.data.redis.connection.jredis.JredisConnectionFactory; 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.Visibility; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; @Configuration
public class RedisConfig{ /** * 注入redis连接工厂里面的(userRedisConnectionFactory)bean */ @Autowired @Qualifier("userRedisConnectionFactory") private RedisConnectionFactory userRedisConnectionFactory; /** * 注入redis连接工厂里面的(redisConnectionFactory)bean */ @Autowired @Qualifier("redisConnectionFactory") private RedisConnectionFactory redisConnectionFactory; //主数据redisTemplate的配置 @Bean(name="redisTemplate") public RedisTemplate<String, String> redisTemplate(){ StringRedisTemplate template=new StringRedisTemplate(redisConnectionFactory); template.afterPropertiesSet(); return template; } //用户redisTemplate的配置 @Bean(name="userRedisTemplate") public RedisTemplate<String, String> userRedisTemplate(){ StringRedisTemplate template=new StringRedisTemplate(userRedisConnectionFactory); template.afterPropertiesSet(); return template; } } |
三、操作redis
public boolean saveToken(OAuth2AccessToken token,String userCd,Object userToken,String typeCd){ ValueOperations<String, String> opsForValue = userRedisTemplate.opsForValue();//引用操作 //String encode = SecurityUtil.MD5(token.getValue()); System.out.println("redis的key:"+token+"_"+userCd); Set<String> keys = userRedisTemplate.keys("*_" + userCd+"_"+typeCd);//配置keys键 userRedisTemplate.delete(keys);//操作删除redis的记录 opsForValue.set(token+"_"+userCd+"_"+typeCd, JSON.toJSONString(userToken,SerializerFeature.WriteMapNullValue));//设置新的redis记录 //设置缓存时间 if(token.getExpiration()!=null){ userRedisTemplate.expire(token+"_"+userCd+"_"+typeCd, token.getExpiration().getTime()-new Date().getTime(), TimeUnit.MILLISECONDS);//设置reids记录的延期 }else{ userRedisTemplate.expire(token+"_"+userCd+"_"+typeCd, this.lockLoginTime, TimeUnit.HOURS); } return true; } |
String validate = opsForValue.get("validateCode_"+userLoginVO.getValId());//获取redis记录的数据 |