分享

springboot使用redis指南

 新用户57365882 2023-11-01 发布于浙江
​配置:
redis:
  host: 127.0.0.1
  port: 6379
  maxTotal: 10
  maxIdle: 200
  maxWaitMillis: 10000
  password:
  timeout: 10000
  #是否启用redis
  enabled: false

配置类:
package xxxx.xxxx.xxxx.xxxxx;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

@Component
@Data
public class RedisConfiguration {

    @Value("${redis.host}")
    private String host;
    @Value("${redis.port}")
    private int port;
    @Value("${redis.maxTotal}")
    private int maxTotal;
    @Value("${redis.password}")
    private String password;
    @Value("${redis.timeout}")
    private int timeout;
    @Value("${redis.maxIdle}")
    private int maxIdle;
    @Value("${redis.maxWaitMillis}")
    private int maxWaitMillis;
    @Value("${redis.enabled}")
    private Boolean enabled;



    public JedisPoolConfig jedisPoolConfig(){
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(maxTotal);
        return jedisPoolConfig;
    }
    @Bean
    public JedisPool jedisPool(){
        JedisPoolConfig jedisPoolConfig  = jedisPoolConfig();
        if(password==null||password.length()==0){
            return new JedisPool(jedisPoolConfig,host,port,timeout);
        }else{
            return new JedisPool(jedisPoolConfig,host,port,timeout,password);
        }

    }


}
工具类:
package com.alibaba.kos.data.hub.datahub.redis;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import lombok.extern.slf4j.Slf4j;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

@Component
@Slf4j
public class RedisUtil{

    @Autowired
    private RedisConfiguration redisConfiguration;

    private JedisPool getJedisPool(){
        return redisConfiguration.jedisPool();
    }
    /**
     * <p>
     * 通过key获取储存在redis中的value
     * </p>
     * <p>
     * 并释放连接
     * </p>
     *
     * @param key
     * @return 成功返回value 失败返回null
     */
    public String get(String key){
        if(!redisConfiguration.getEnabled()){return null;}
        String value = null;
        Jedis jedis = null;
       try{
           jedis = getJedisPool().getResource();
           value =  jedis.get(key);
       }catch (Exception e){
           log.error(e.getMessage());
       }finally {
           returnResource(jedis);
       }
       return value;
    }

    /**
     * <p>
     * 向redis存入key和value,并释放连接资源
     * </p>
     * <p>
     * 如果key已经存在 则覆盖
     * </p>
     *
     * @param key
     * @param value
     * @param
     * @return 成功 返回OK 失败返回 0
     */
    public String set(String key, String value) {
        if(!redisConfiguration.getEnabled()){return null;}
        Jedis jedis = null;
        try {
            jedis = getJedisPool().getResource();
            return jedis.set(key, value);
        } catch (Exception e) {
            log.error(e.getMessage());
            return "0";
        } finally {
            returnResource(jedis);
        }
    }

    /**
     * 返还到连接池
     * @param jedis
     */
    public static void returnResource(Jedis jedis) {
        if (jedis != null) {
            jedis.close();
        }
    }



}
使用方法:
  @Autowired
    private RedisUtil redisUtil;

引入的包:
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>



    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多