zoukankan      html  css  js  c++  java
  • Springboot2.X中使用Redis

      使用redis之前,首先要安装redis服务,确保服务正常启动,redis-cli客户端能连接上。springboot集成redis上手快,简单几步就可以搞定。

      首先,引入springboot集成redis的依赖:

    springboot集成redis依赖坐标:
    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>

      其次,在项目的配置文件中配置redis:

    redis:
        host: IP地址
        port: 6379
        timeout: 60s
        database: 1
        pool:
          max-active: 100
          max-idle: 10
          max-wait: 100000
    

      此处配置根据自身实际情况配置,在安装redis如果不是使用默认配置,可根据自己修改的内容进行配置。在springboot项目中使用RedisTemplate就可使用。

    @Autowired
        private RedisTemplate redisTemplate;
    

      但是这个调用的是redis自带的RedisTemplate,redistemplate默认key-value都是object类型,使用时都需要序列化使用,然而我们在开发过程中使用的多是key:String、value:object的类型,所以我们可以自己写个配置类,自定义RedisTemplate模板:

    @Configuration
    public class RedisConfig {
    	@SuppressWarnings("all")
    	public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
    	// 我们为了自己开发方便,一般直接使用 <String, Object>
    	RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
    	template.setConnectionFactory(factory);
    	// Json序列化配置
    	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);
    	// String 的序列化
    	StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
    	// key采用String的序列化方式
    	template.setKeySerializer(stringRedisSerializer);
    	// hash的key也采用String的序列化方式
    	template.setHashKeySerializer(stringRedisSerializer);
    	// value序列化方式采用jackson
    	template.setValueSerializer(jackson2JsonRedisSerializer);
    	// hash的value序列化方式采用jackson
    	template.setHashValueSerializer(jackson2JsonRedisSerializer);
    	template.afterPropertiesSet();
    	return template;
    	}
    }
    

      为了更加方便,我们还可以自己写个Redis工具类:

    @Slf4j
    @Component
    public class RedisUtil {
    	@Autowired
    	private RedisTemplate redisTemplate;
    
    	/**
    	 * SET操作
    	 *
    	 * @param key   KEY
    	 * @param value VALUE
    	 * @return 是否成功
    	 */
    	public boolean set(String key, String value) {
    		try {
    			redisTemplate.opsForValue().set(key, value);
    			return true;
    		} catch (Exception e) {
    			log.error("redis set操作异常:" + e.getMessage());
    			return false;
    		}
    	}
    
    	/**
    	 * GET操作
    	 *
    	 * @param key KEY
    	 * @return VALUE
    	 */
    	public String get(String key) {
    		try {
    			String value = redisTemplate.opsForValue().get(key);
    			return value;
    		} catch (Exception e) {
    			log.error("redis get操作异常:" + e.getMessage());
    			return null;
    		}
    	}
    }
    

      使用示例:

    @Slf4j
    @Service
    public class getTokenServiceImpl implements GetTokenService {
    	@Autowired
    	private RedisUtil redis;
    
    	@Value("${xzqdm}")
    	private String xzqdm;
    
    	@Value("${ausername}")
    	private String ausername;
    
    	@Value("${password}")
    	private String password;
    
    	@Value("${url.getToken}")
    	private String urlGetToken;
    
    	@Override
    	public ResTokenMes getToken() throws IOException {
    		HttpClientUtil https= new HttpClientUtil();
    		GetHeadMes headMes = new GetHeadMes();
    		........................此处省略若干代码
    		String result = https.sendHttpClient(url, tokenmap);
    		ResTokenMes resTokenMes = JSONUtil.toBean(JSONUtil.toJsonStr(result), ResTokenMes.class);
    		String token = resTokenMes.getData().getToken();
    		redis.set("token", token);
    		return resTokenMes;
    	}
    }
    
    
    
    @Slf4j
    @Service
    public class PushServiceImpl implements PushService {
    
    	@Autowired
    	private RedisUtil redis;
    
    	@Autowired
    	InfoMapper infoMapper;
    
    	@Autowired
    	@Qualifier("batchKafkaTemplate")
    	private KafkaTemplate<Object, Object> batchKafkaTemplate;
    
    	@Value("${kafka.topic.batch}")
    	private String topic;
    
    	@Value("${xzqdm}")
    	private String xzqdm;
    
    	@Value("${url.postXF}")
    	private String urlPostXF;
    
    	@Value("${url.postFK}")
    	private String urlPostFK;
    
    	@Override
    	public R getApply() {
    		//获取token
    		String token = redis.get("token");
                    ....................此处省略若干代码
            }
    }        
    

      

  • 相关阅读:
    【css3】使用filter属性实现改变svg图标颜色
    Live CD
    Linux定时任务 crontab(-l -e)、at、batch
    linux图形界面 KDE、GNOME
    shell脚本3——调试
    shell脚本2——控制语句
    bash:双引号和单引号
    shell脚本1——变量 $、read、``
    SSH
    Linux关机、重启、退出
  • 原文地址:https://www.cnblogs.com/zhuifenglang/p/13161919.html
Copyright © 2011-2022 走看看