Java Redis缓存服务类

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;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JedisUtil是一个Java Redis缓存工具,它封装了Jedis客户端的基本操作,使得使用Redis缓存更加简单方便。 以下是JedisUtil的示例代码: ``` import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class JedisUtil { private static JedisPool jedisPool; static { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxTotal(1000); jedisPoolConfig.setMaxIdle(100); jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379); } public static void set(String key, String value) { try (Jedis jedis = jedisPool.getResource()) { jedis.set(key, value); } } public static String get(String key) { try (Jedis jedis = jedisPool.getResource()) { return jedis.get(key); } } public static void del(String key) { try (Jedis jedis = jedisPool.getResource()) { jedis.del(key); } } public static void expire(String key, int seconds) { try (Jedis jedis = jedisPool.getResource()) { jedis.expire(key, seconds); } } public static boolean exists(String key) { try (Jedis jedis = jedisPool.getResource()) { return jedis.exists(key); } } } ``` 在上面的代码中,我们使用了JedisPool来管理Jedis连接,它的作用是维护一定数量的Jedis连接,以便在需要时从池中获取连接,减少了创建和关闭连接的开销。 在使用JedisUtil时,我们只需要调用set、get、del、expire和exists等方法,就可以完成对Redis缓存的操作。 例如,要将一个键值对("name", "Tom")存入Redis中,可以使用以下代码: ``` JedisUtil.set("name", "Tom"); ``` 要获取键为"name"的值,可以使用以下代码: ``` String name = JedisUtil.get("name"); ``` 同时,JedisUtil还提供了删除、设置过期时间和判断键是否存在等方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

VCHH

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

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

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

打赏作者

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

抵扣说明:

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

余额充值