All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sinszm.sofa.JedisUtil Maven / Gradle / Ivy

package com.sinszm.sofa;

import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.SerializeUtil;
import com.sinszm.sofa.enums.JedisModel;
import com.sinszm.sofa.exception.ApiException;
import com.sinszm.sofa.util.SpringHelper;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisCluster;

import javax.annotation.Resource;
import java.io.Serializable;
import java.nio.charset.StandardCharsets;

/**
 * Jedis缓存操作
 * 

* 常用操作 *

* @author fh411 */ @Component public class JedisUtil { @Resource private JedisProperties jedisProperties; /** * 集群实例 * @return 实例 */ public JedisCluster cluster() { if (isCluster()) { return SpringHelper.instance().getBean(JedisCluster.class); } throw new ApiException("-1", "Jedis不是集群模式"); } /** * 单节点或哨兵实例 * @return 实例 */ public Jedis jedis() { if (!isCluster()) { return SpringHelper.instance().getBean(Jedis.class); } throw new ApiException("-1", "Jedis不是单节点模式或哨兵模式"); } private boolean isCluster() { return jedisProperties.getModel() == JedisModel.CLUSTER; } /** * 基本 * @param key 键 * @param data 数据 */ public void set(String key, T data) { Assert.notEmpty(key, () -> new ApiException("-1", "键不能为空")); Assert.notNull(data, () -> new ApiException("-1", "数据不能为空")); if (isCluster()) { cluster().set(key.getBytes(StandardCharsets.UTF_8), SerializeUtil.serialize(data)); } else { jedis().set(key.getBytes(StandardCharsets.UTF_8), SerializeUtil.serialize(data)); } } /** * 基本 * @param key 键 * @param data 数据 * @param expire 过期时间,精度:秒 */ public void set(String key, T data, long expire) { set(key, data); expire(key, expire < 0 ? 0 : expire); } /** * 获取数据 * @param key 键 * @return 数据 */ public T get(String key) { Assert.notEmpty(key, () -> new ApiException("-1", "键不能为空")); byte[] bytes; if (isCluster()) { bytes = cluster().get(key.getBytes(StandardCharsets.UTF_8)); } else { bytes = jedis().get(key.getBytes(StandardCharsets.UTF_8)); } try { return SerializeUtil.deserialize(bytes); } catch (Exception e) { return null; } } /** * 删除键 * @param key 键 * @return 删除成功的个数 */ public Long del(String... key) { if (isCluster()) { return cluster().del(key); } else { return jedis().del(key); } } /** * 判断键是否存在 * @param key 键 * @return 结果,true存在,false不存在 */ public Boolean exists(String key) { Assert.notEmpty(key, () -> new ApiException("-1", "键不能为空")); if (isCluster()) { return cluster().exists(key); } else { return jedis().exists(key); } } /** * 清空缓存 * @return 总是返回OK */ public String flushDb() { if (isCluster()) { throw new ApiException("-1", "此方法不支持"); } else { return jedis().flushDB(); } } /** * 设置过期 * @param key 键 * @param expire 过期时间,精度:秒 * @return 结果 */ public Long expire(String key, long expire) { Assert.notEmpty(key, () -> new ApiException("-1", "键不能为空")); if (isCluster()) { return cluster().expire(key, expire < 0 ? 0 : expire); } else { return jedis().expire(key, expire < 0 ? 0 : expire); } } /** * 查询缓存剩余生成时间 * @param key 键 * @return 剩余过期时间,精度:秒 */ public Long ttl(String key) { Assert.notEmpty(key, () -> new ApiException("-1", "键不能为空")); if (isCluster()) { return cluster().ttl(key); } else { return jedis().ttl(key); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy