zoukankan      html  css  js  c++  java
  • 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);
    	}
    

      




  • 相关阅读:
    SpringMVC的拦截器
    artDialog双击会关闭对话框的修改
    artDialog弹出框使用
    解决从本地文件系统上传到HDFS时的权限问题
    JAVA中写时复制(Copy-On-Write)Map实现
    数据结构--堆的实现(下)
    二叉树的创建算法
    Lamport Logical Clock 学习
    动态规划的思想来求解字符串分割问题
    数据结构--图 的JAVA实现(下)
  • 原文地址:https://www.cnblogs.com/tietazhan/p/7479585.html
Copyright © 2011-2022 走看看