SpringBoot整合redis

bootstrap.yml配置中在spring:下一层添加

配置redis服务器的IP端口以及连接池的参数设置

redis:
    host: 10.15.255.15
    port: 6379
    database: 5
    lettuce:
      pool:
        max-active: 1024
        max-wait: -1
        max-idle: 50
        min-idle: 0

pom.xml配置中加入maven依赖


	org.springframework.boot
	spring-boot-starter-data-redis
	
		
		
			io.lettuce
			lettuce-core
		
	



	redis.clients
	jedis

RedisTemplate

  • 是什么?  Spring封装了RedisTemplate对象来进行对Redis的各种操作,它支持所有的Redis原生的api。RedisTemplate位于spring-data-redis包下。RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅。
  • 怎么用?编写RedisConfig配置类,配置
@Configuration
@EnableCaching
public class RedisConfig {

    @Bean(name = "redisTemplate")
    public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) {
        final RedisTemplate template = new RedisTemplate();
        template.setConnectionFactory(connectionFactory);
        //设置key和value的序列化规则
        template.setValueSerializer(new GenericToStringSerializer(String.class));
        template.setKeySerializer(new StringRedisSerializer());
        template.afterPropertiesSet();
        return template;
    }
}
  • 封装redis的基本操作类
@Service
public class RedisBase {

    /**
     * redisTemplate
     */
    @Resource
    private RedisTemplate redisTemplate;

    /**
     * 删除缓存
     * 根据key精确匹配删除
     * 
     * @param key key
     */
    public void deleteKey(String... key) {
        if (key != null && key.length > 0) {
            if (key.length == 1) {
                redisTemplate.delete(key[0]);
            } else {
                redisTemplate.delete(CollectionUtils.arrayToList(key));
            }
        }
    }

    /**
     * 取得缓存(字符串类型)
     * 
     * @param key key
     * @return String
     */
    public String getString(String key) {
        final String value = (String) redisTemplate.boundValueOps(key).get();
        return value;
    }

    /**
     * 将value字符串对象写入缓存
     * 
     * @param key key
     * @param value value
     */
    public void setString(String key, String value) {
        redisTemplate.opsForValue().set(key, value);
    }

    /**
     * 将value对象写入缓存
     * 
     * @param key key
     * @param value value
     */
    public void set(String key, Object value) {
        if (value.getClass().equals(String.class)) {
            redisTemplate.opsForValue().set(key, value.toString());
        }

    }

    /**
     * 指定缓存的失效时间
     * 
     * @param key key
     * @param timeout timeout
     *            失效时间(秒)
     */
    public void expire(String key, long timeout) {
        if (timeout > 0) {
            redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
        }
    }

    /**
     * 获取过期时间
     * @param key
     * @return
     */
    public Long getExpire(String key) {
        return redisTemplate.boundValueOps(key).getExpire();
    }

    /**
     * 模糊查询keys
     * 
     * @param pattern pattern
     * @return set
     */
    public Set keys(String pattern) {
        return redisTemplate.keys(pattern);
    }

    /**
     * 计数器
     * 
     * @param key key
     */
    public void increment(String key) {
        redisTemplate.opsForValue().increment(key, 1);
    }

    /**
     * 可设置步长计数器
     * @param key
     * @param step
     */
    public Long increment(String key, Long step) {
        return redisTemplate.opsForValue().increment(key, step);
    }

    /**
     * 首次设置返回true
     * @param key
     * @param value
     * @return
     */
    public Boolean setIfAbsent(String key, Object value) {
        return redisTemplate.opsForValue().setIfAbsent(key, value);
    }

    /**
     * 批量设置hash键值对
     * @param key
     * @param dataMap
     */
    public void putAll(String key, Map dataMap) {
        redisTemplate.boundHashOps(key).putAll(dataMap);
    }

    /**
     * 设置hash键值对
     * @param key
     * @param hkey
     * @param hval
     */
    public void put(String key, Object hkey, Object hval) {
        redisTemplate.boundHashOps(key).put(hkey, hval);
    }

    /**
     * 获取单个hash键值对的值
     * @param key
     * @param hkey
     * @return
     */
    public Object get(String key, Object hkey) {
        return redisTemplate.boundHashOps(key).get(hkey);
    }

    /**
     * 批量获取hash键值对得值
     * @param key
     * @param keys
     * @return
     */
    public List multiGet(String key, List keys) {
        return redisTemplate.boundHashOps(key).multiGet(Collections.singleton(keys));
    }

    /**
     * 获取hash单个键值对
     * @param key
     * @return
     */
    public Map entries(String key) {
        return redisTemplate.boundHashOps(key).entries();
    }

} 
  

然后编写启动服务,编写测试类。

 

 

你可能感兴趣的:(数据库,框架)