栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 数据库 > 缓存机制 > Redis缓存

Redis和springboot 整合redisUtil类的示例代码

Redis缓存 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Redis和springboot 整合redisUtil类的示例代码

一、引入依赖

  org.springframework.boot
  spring-boot-starter-data-redis
二、在application.yml 配置redis服务器
spring:
 # 环境 dev|test|prod
 profiles:
  active: dev
 servlet:
  multipart:
   max-file-size: 100MB
   max-request-size: 100MB
   enabled: true
 redis:
  database: 0      # Redis服务器数据库
  host: 192.168.6.27  # Redis服务器地址
  port: 6379      # Redis服务器连接端口
  password: 123456   # Redis服务器连接密码(默认为空)
  timeout: 6000ms    # 连接超时时间(毫秒)
  jedis:
   pool:
    max-active: 200  # 连接池最大连接数(使用负值表示没有限制)
    max-wait: -1   # 连接池最大阻塞等待时间(使用负值表示没有限制)
    max-idle: 10   # 连接池中的最大空闲连接
    min-idle: 0    # 连接池中的最小空闲连接
三、写一个redis配置类

(1)聊聊RedisTemplate的自动配置 其实现在就可以在代码中注入RedisTemplate,为啥可以直接注入呢?先看下源码吧。下图为RedisAutoConfiguration类中的截图,为了防止图片失效,代码也贴上。

通过源码可以看出,SpringBoot自动帮我们在容器中生成了一个RedisTemplate和一个StringRedisTemplate。但是,这个RedisTemplate的泛型是,写代码不方便,需要写好多类型转换的代码;我们需要一个泛型为形式的RedisTemplate。并且,这个RedisTemplate没有设置数据存在Redis时,key及value的序列化方式。
看到这个@ConditionalOnMissingBean注解后,就知道如果Spring容器中有了RedisTemplate对象了,这个自动配置的RedisTemplate不会实例化。因此我们可以直接自己写个配置类,配置RedisTemplate。(2)既然自动配置不好用,就重新配置一个RedisTemplate

包的结构如下

代码如下:

package com.yux.redisdemo.redis;
 
import org.springframework.context.annotation.Bean;
 
import org.springframework.context.annotation.Configuration;
 
import org.springframework.data.redis.connection.RedisConnectionFactory;
 
import org.springframework.data.redis.core.RedisTemplate;
 
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
 
import org.springframework.data.redis.serializer.StringRedisSerializer;
 
import com.fasterxml.jackson.annotation.JsonAutoDetect;
 
import com.fasterxml.jackson.annotation.PropertyAccessor;
 
import com.fasterxml.jackson.databind.ObjectMapper;
 

 
@Configuration
public class RedisConfig {
 
  @Bean
  @SuppressWarnings("all")
  public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
 
    RedisTemplate template = new RedisTemplate();
 
    template.setConnectionFactory(factory);
 
    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);
 
    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;
 
  }
 
}
 四、编写一个RedisUtil类
package com.yux.redisdemo.redis;
 
import java.util.List;
 
import java.util.Map;
 
import java.util.Set;
 
import java.util.concurrent.TimeUnit;
 
import org.springframework.beans.factory.annotation.Autowired;
 
import org.springframework.data.redis.core.RedisTemplate;
 
import org.springframework.stereotype.Component;
 
import org.springframework.util.CollectionUtils;
 

 
@Component
public final class RedisUtil {
 
 
  @Autowired
 
  private RedisTemplate redisTemplate;
 
  // =============================common============================
 
  
 
  public boolean expire(String key, long time) {
 
    try {
 
      if (time > 0) {
 
 redisTemplate.expire(key, time, TimeUnit.SECONDS);
 
      }
 
      return true;
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return false;
 
    }
 
  }
 
  
 
  public long getExpire(String key) {
 
    return redisTemplate.getExpire(key, TimeUnit.SECONDS);
 
  }
 
  
 
  public boolean hasKey(String key) {
 
    try {
 
      return redisTemplate.hasKey(key);
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return false;
 
    }
 
  }
 
  
 
  @SuppressWarnings("unchecked")
 
  public void del(String... key) {
 
    if (key != null && key.length > 0) {
 
      if (key.length == 1) {
 
 redisTemplate.delete(key[0]);
 
      } else {
 
 redisTemplate.delete(CollectionUtils.arrayToList(key));
 
      }
 
    }
 
  }
 
  // ============================String=============================
 
  
 
  public Object get(String key) {
 
    return key == null ? null : redisTemplate.opsForValue().get(key);
 
  }
 
  
 
  public boolean set(String key, Object value) {
 
    try {
 
      redisTemplate.opsForValue().set(key, value);
 
      return true;
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return false;
 
    }
 
  }
 
  
 
  public boolean set(String key, Object value, long time) {
 
    try {
 
      if (time > 0) {
 
 redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
 
      } else {
 
 set(key, value);
 
      }
 
      return true;
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return false;
 
    }
 
  }
 
  
 
  public long incr(String key, long delta) {
 
    if (delta < 0) {
 
      throw new RuntimeException("递增因子必须大于0");
 
    }
 
    return redisTemplate.opsForValue().increment(key, delta);
 
  }
 
  
 
  public long decr(String key, long delta) {
 
    if (delta < 0) {
 
      throw new RuntimeException("递减因子必须大于0");
 
    }
 
    return redisTemplate.opsForValue().increment(key, -delta);
 
  }
 
  // ================================Map=================================
 
  
 
  public Object hget(String key, String item) {
 
    return redisTemplate.opsForHash().get(key, item);
 
  }
 
  
 
  public Map hmget(String key) {
 
    return redisTemplate.opsForHash().entries(key);
 
  }
 
  
 
  public boolean hmset(String key, Map map) {
 
    try {
 
      redisTemplate.opsForHash().putAll(key, map);
 
      return true;
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return false;
 
    }
 
  }
 
  
 
  public boolean hmset(String key, Map map, long time) {
 
    try {
 
      redisTemplate.opsForHash().putAll(key, map);
 
      if (time > 0) {
 
 expire(key, time);
 
      }
 
      return true;
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return false;
 
    }
 
  }
 
  
 
  public boolean hset(String key, String item, Object value) {
 
    try {
 
      redisTemplate.opsForHash().put(key, item, value);
 
      return true;
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return false;
 
    }
 
  }
 
  
 
  public boolean hset(String key, String item, Object value, long time) {
 
    try {
 
      redisTemplate.opsForHash().put(key, item, value);
 
      if (time > 0) {
 
 expire(key, time);
 
      }
 
      return true;
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return false;
 
    }
 
  }
 
  
 
  public void hdel(String key, Object... item) {
 
    redisTemplate.opsForHash().delete(key, item);
 
  }
 
  
 
  public boolean hHasKey(String key, String item) {
 
    return redisTemplate.opsForHash().hasKey(key, item);
 
  }
 
  
 
  public double hincr(String key, String item, double by) {
 
    return redisTemplate.opsForHash().increment(key, item, by);
 
  }
 
  
 
  public double hdecr(String key, String item, double by) {
 
    return redisTemplate.opsForHash().increment(key, item, -by);
 
  }
 
  // ============================set=============================
 
  
 
  public Set sGet(String key) {
 
    try {
 
      return redisTemplate.opsForSet().members(key);
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return null;
 
    }
 
  }
 
  
 
  public boolean sHasKey(String key, Object value) {
 
    try {
 
      return redisTemplate.opsForSet().isMember(key, value);
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return false;
 
    }
 
  }
 
  
 
  public long sSet(String key, Object... values) {
 
    try {
 
      return redisTemplate.opsForSet().add(key, values);
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return 0;
 
    }
 
  }
 
  
 
  public long sSetAndTime(String key, long time, Object... values) {
 
    try {
 
      Long count = redisTemplate.opsForSet().add(key, values);
 
      if (time > 0)
 
 expire(key, time);
 
      return count;
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return 0;
 
    }
 
  }
 
  
 
  public long sGetSetSize(String key) {
 
    try {
 
      return redisTemplate.opsForSet().size(key);
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return 0;
 
    }
 
  }
 
  
 
  public long setRemove(String key, Object... values) {
 
    try {
 
      Long count = redisTemplate.opsForSet().remove(key, values);
 
      return count;
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return 0;
 
    }
 
  }
 
  // ===============================list=================================
 
  
 
  public List lGet(String key, long start, long end) {
 
    try {
 
      return redisTemplate.opsForList().range(key, start, end);
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return null;
 
    }
 
  }
 
  
 
  public long lGetListSize(String key) {
 
    try {
 
      return redisTemplate.opsForList().size(key);
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return 0;
 
    }
 
  }
 
  
 
  public Object lGetIndex(String key, long index) {
 
    try {
 
      return redisTemplate.opsForList().index(key, index);
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return null;
 
    }
 
  }
 
  
 
  public boolean lSet(String key, Object value) {
 
    try {
 
      redisTemplate.opsForList().rightPush(key, value);
 
      return true;
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return false;
 
    }
 
  }
 
  
 
  public boolean lSet(String key, Object value, long time) {
 
    try {
 
      redisTemplate.opsForList().rightPush(key, value);
 
      if (time > 0)
 
 expire(key, time);
 
      return true;
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return false;
 
    }
 
  }
 
  
 
  public boolean lSet(String key, List value) {
 
    try {
 
      redisTemplate.opsForList().rightPushAll(key, value);
 
      return true;
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return false;
 
    }
 
  }
 
  
 
  public boolean lSet(String key, List value, long time) {
 
    try {
 
      redisTemplate.opsForList().rightPushAll(key, value);
 
      if (time > 0)
 
 expire(key, time);
 
      return true;
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return false;
 
    }
 
  }
 
  
 
  public boolean lUpdateIndex(String key, long index, Object value) {
 
    try {
 
      redisTemplate.opsForList().set(key, index, value);
 
      return true;
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return false;
 
    }
 
  }
 
  
 
  public long lRemove(String key, long count, Object value) {
 
    try {
 
      Long remove = redisTemplate.opsForList().remove(key, count, value);
 
      return remove;
 
    } catch (Exception e) {
 
      e.printStackTrace();
 
      return 0;
 
    }
 
  }
}

五、在service中注入RedisUtil可用

到此这篇关于Redis和springboot 整合redisUtil类的示例代码的文章就介绍到这了,更多相关Redis和springboot 整合redisUtil类内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号