Java Redis缓存服务类

本文介绍了一个基于Redis的缓存服务实现方法,包括配置加载、连接建立及资源管理等核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.panda.core.db.impl;


import com.panda.core.log.log.util.Tools;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * 缓存服务
 * Created by Lovell on 16/6/16.
 */
public class CacheService {
    private static Logger logger = LoggerFactory.getLogger(CacheService.class);

    private static String CACHE_CONFIG_FILE = "/redis.properties";

    // 缓存过期时间
    private int rdExpiredtime = 0;
    // 缓存地址
    private String rdUrl = null;
    // 端口
    private short rdPort = 0;
    // 锁超时最长时间
    private int rdLocktimeout = 0;
    // redis连接超时时间
    private int rdConnTimeout = 0;
    // redis缓冲池
    private JedisPool jedisPool = null;

    private static CacheService cacheService;
    public static CacheService getInstance() {
        if (cacheService == null) {
            cacheService = new CacheService();
        }
        return cacheService;
    }

    public void setCacheConfigFilePathName(final String path) {
        if (path.charAt(0) == '/') {
            CACHE_CONFIG_FILE = path;
        } else {
            CACHE_CONFIG_FILE = "/" + path;
        }
    }
    /**
     * 连接redis
     */
    public void start() throws IOException {
        Properties properties = new Properties();

        String strPath = Tools.getPath();
        File dbFile = new File(strPath + CACHE_CONFIG_FILE);
        InputStream inputStream = new FileInputStream(dbFile);
        // 获取Resource路径的配置文件
//        InputStream inputStream = CacheService.class.getClass().getResourceAsStream(CACHE_CONFIG_FILE);
        properties.load(inputStream);

        rdExpiredtime = Integer.valueOf(properties.getProperty("redis.expiredTime"));
        rdUrl = properties.getProperty("redis.url");
        rdPort = Short.valueOf(properties.getProperty("redis.port"));
        rdLocktimeout = Integer.valueOf(properties.getProperty("redis.lockTimeout"));

        JedisPoolConfig config = new JedisPoolConfig();
        jedisPool = new JedisPool(config, rdUrl, rdPort, rdConnTimeout);
        logger.info("redis client start ok");
        getJedis();
    }

    /**
     * 关闭缓存
     */
    public void stop() throws IOException {
        if (jedisPool != null) {
            jedisPool.destroy();
        }
    }

    public JedisPool getJedisPool() {
        return  jedisPool;
    }

    /**
     * 测试连接Redis服务器
     * @return
     */
    public Jedis getJedis() {
        try {
           return jedisPool.getResource();
        } catch (Exception e) {
            logger.error("redis server is not running");
        }
        return null;
    }

    /**
     * 缓冲超时
     * @return
     */
    public int getCacheExpiredTime() {
        return rdExpiredtime;
    }

    /**
     * 锁超时时间
     * @return
     */
    public int getCacheLocktimeout() {
        return rdLocktimeout;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VCHH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值