• spring 的redis操作类RedisTemplate


    spring 集成的redis操作几乎都在RedisTemplate内了。

    已spring boot为例,

    再properties属性文件内配置好

    redis的参数

    spring.redis.host=127.0.0.1 
    spring.redis.port=6379  
    spring.redis.password=redispass
    spring.redis.database=0
    spring.redis.timeout=5000
    

      再到 Application启动类下加入以下代码:

        @Bean
        public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
        {
            Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
            ObjectMapper om = new ObjectMapper();
            om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
            om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
            jackson2JsonRedisSerializer.setObjectMapper(om);
            RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
            template.setConnectionFactory(redisConnectionFactory); //线程安全的连接工程
            template.setKeySerializer(jackson2JsonRedisSerializer); //key序列化方式采用fastJson
            template.setValueSerializer(jackson2JsonRedisSerializer); //value序列化方式
            template.setHashKeySerializer(jackson2JsonRedisSerializer);
            template.setHashValueSerializer(jackson2JsonRedisSerializer);
            template.afterPropertiesSet();        
            return template;
        }
    

      这样就可以在需要的时候直接使用自动注入(@Autowired)获取redisTemplate操作redis了:

    	@Autowired
    	private RedisTemplate<String, String> redisTemplate;
    
    	@Override
    	public Result selectUserById(String id) {
    		if(StringUtils.isEmpty(id)){
    			throw new BusinessException(CommonConstants.ErrorCode.ERROR_ILLEGAL_PARAMTER);//ID为空
    		}
    		String redisCache = redisTemplate.opsForValue().get(CacheKeys.SELECT_USER_PHONE_KEYS+id);
    		if(redisCache!=null){
    			Result result = new Gson().fromJson(redisCache, Result.class);
    			if(result.getResult() == null){
    				throw new BusinessException(CommonConstants.ErrorCode.ERROR_ILLEGAL_USER);//用户不存在
    			}
    			return result;
    		}
    		User selectByPrimaryKey = userMapper.selectByPrimaryKey(id); //自己项目的Dao层
    		redisTemplate.opsForValue().set(CacheKeys.SELECT_USER_PHONE_KEYS+id, CommonConstants.GSONIGNORENULL.toJson(new Result(selectByPrimaryKey)), 1, TimeUnit.HOURS); //缓存有效时间为1天
    		if(selectByPrimaryKey == null){
    			throw new BusinessException(CommonConstants.ErrorCode.ERROR_ILLEGAL_USER);//用户不存在
    		}
    		return new Result(selectByPrimaryKey);
    	}
    

      




  • 相关阅读:
    POJ 3923 Ugly Windows(——考察思维缜密性的模拟题)
    POJ 3829 Seat taking up is tough(——只是题目很长的模拟)
    练习json读取中文
    关于调接口和腾讯云cos方面。
    JavaScript如何处理解析JSON数据详解
    js获取url参数值的两种方式
    修改Host,配置域名访问
    Atom设置震撼的编辑效果
    atom总结
    用node.js可以开启静态服务 不需要借助apache 或者xampl
  • 原文地址:https://www.cnblogs.com/tietazhan/p/7479585.html
Copyright © 2020-2023  润新知