redis操作帮助类
RedisHelper.java
import redis.clients.jedis.*;
import java.util.*;
public class RedisHelper {
private static JedisPool pool;
private static RedisHelper redisHelper = null;
/**
* 通过静态工厂方法来沟通对象,复用对象,避免每次重新产生新对象
*/
public static RedisHelper newInstance(String host, int port, String password, int maxIdle, int maxTotal, long maxWaitMillis) {
if (null != redisHelper)
return redisHelper;
synchronized (RedisHelper.class) {
if (null != redisHelper)
return redisHelper;
redisHelper = new RedisHelper(host, port, password, maxIdle, maxTotal, maxWaitMillis);
return redisHelper;
}
}
private RedisHelper(String host, int port, String password, int maxIdle, int maxTotal, long maxWaitMillis) {
if (null != pool)
return;
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxIdle(maxIdle);//最大空闲连接数
config.setMaxTotal(maxTotal);//最大连接数
config.setTestOnBorrow(true);
config.setTestOnReturn(false);
config.setMaxWaitMillis(maxWaitMillis);
pool = new JedisPool(config, host, port, 10000, password);
}
/**
* 没有特别需求,请不要在外部调用此方法
*/
public Jedis getConnection() {
return pool.getResource();
}
public void returnConnection(Jedis conn) {
//自Jedis3.0版本后jedisPool.returnResource()遭弃用,官方重写了Jedis的close方法用以代替
if (null != conn) {
conn.close();
}
}
public Pipeline pipeline() {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.pipelined();
} finally {
this.returnConnection(conn);
}
}
public Set<String> keys(String pattern) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.keys(pattern);
} finally {
this.returnConnection(conn);
}
}
public void set(String key, String value) {
Jedis conn = null;
try {
conn = this.getConnection();
conn.set(key, value);
} finally {
this.returnConnection(conn);
}
}
public long setNx(String key, String value) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.setnx(key, value);
} finally {
this.returnConnection(conn);
}
}
public String get(String key) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.get(key);
} finally {
this.returnConnection(conn);
}
}
public String getSet(String key, String value) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.getSet(key, value);
} finally {
this.returnConnection(conn);
}
}
public long del(String key) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.del(key);
} finally {
this.returnConnection(conn);
}
}
public long del(String... keys) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.del(keys);
} finally {
this.returnConnection(conn);
}
}
/**
* 若 key 存在,返回 true ,否则返回 false 。
*/
public boolean exists(String key) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.exists(key);
} finally {
this.returnConnection(conn);
}
}
/**
* 设置成功,返回 1, key 不存在或设置失败,返回 0
*/
public long pexpire(String key, long milliseconds) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.pexpire(key, milliseconds);
} finally {
this.returnConnection(conn);
}
}
public long hset(String key, String field, String value) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.hset(key, field, value);
} finally {
this.returnConnection(conn);
}
}
/**
* 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。
* 若域 field 已经存在,该操作无效。
* 如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。
*/
public long hsetnx(String key, String field, String value) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.hsetnx(key, field, value);
} finally {
this.returnConnection(conn);
}
}
public long hdel(String key, String... fields) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.hdel(key, fields);
} finally {
this.returnConnection(conn);
}
}
public Set<String> hkeys(String key) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.hkeys(key);
} finally {
this.returnConnection(conn);
}
}
public Map<String, String> hgetAll(String key) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.hgetAll(key);
} finally {
this.returnConnection(conn);
}
}
public String hget(String key, String field) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.hget(key, field);
} finally {
this.returnConnection(conn);
}
}
public long hincrBy(String key, String field, Long value) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.hincrBy(key, field, value);
} finally {
this.returnConnection(conn);
}
}
public Long rpush(String key, String... strings) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.rpush(key, strings);
} finally {
this.returnConnection(conn);
}
}
/**
* 返回元素个数
*/
public Long lpush(String key, String... strings) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.lpush(key, strings);
} finally {
this.returnConnection(conn);
}
}
public String lpop(String key) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.lpop(key);
} finally {
this.returnConnection(conn);
}
}
public String rpop(String key) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.rpop(key);
} finally {
this.returnConnection(conn);
}
}
public List<String> lrange(String key, long start, long end) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.lrange(key, start, end);
} finally {
this.returnConnection(conn);
}
}
public long sadd(String key, String... members) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.sadd(key, members);
} finally {
this.returnConnection(conn);
}
}
public Set<String> sinter(String... keys) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.sinter(keys);
} finally {
this.returnConnection(conn);
}
}
public long scard(String key) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.scard(key);
} finally {
this.returnConnection(conn);
}
}
public String spop(String key) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.spop(key);
} finally {
this.returnConnection(conn);
}
}
public long srem(String key, String... members) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.srem(key, members);
} finally {
this.returnConnection(conn);
}
}
public Set<String> smembers(String key) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.smembers(key);
} finally {
this.returnConnection(conn);
}
}
public Set<String> sunion(String... keys) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.sunion(keys);
} finally {
this.returnConnection(conn);
}
}
public boolean sismember(String key, String member) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.sismember(key, member);
} finally {
this.returnConnection(conn);
}
}
public long increment(String key, long amount) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.incrBy(key, amount);
} finally {
this.returnConnection(conn);
}
}
public double increment(String key, double amount) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.incrByFloat(key, amount);
} finally {
this.returnConnection(conn);
}
}
/**
* 列表长度
*/
public long llen(String key) {
Jedis conn = null;
try {
conn = this.getConnection();
return conn.llen(key);
} finally {
this.returnConnection(conn);
}
}
}
redis操作帮助类的更多相关文章
- Redis 操作帮助类
首先从Nuget中添加StackExchange.Redis包 1.Redis连接对象管理帮助类 using Mvc.Base; using Mvc.Base.Log; using StackExch ...
- php的redis 操作类,适用于单台或多台、多组redis服务器操作
redis 操作类,包括单台或多台.多组redis服务器操作,适用于业务复杂.高性能要求的 php web 应用. redis.php: <?php /* redis 操作类,适用于单台或多台. ...
- Redis操作Set工具类封装,Java Redis Set命令封装
Redis操作Set工具类封装,Java Redis Set命令封装 >>>>>>>>>>>>>>>>& ...
- Redis操作List工具类封装,Java Redis List命令封装
Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...
- Redis操作Hash工具类封装,Redis工具类封装
Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...
- Redis操作字符串工具类封装,Redis工具类封装
Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...
- Java的redis 操作类-优化通用版本
java操作redis多节点处理方式;http://blog.itpub.net/29254281/viewspace-1188644/首先maven引入依赖包 <dependency> ...
- 设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类
1 单例模式简单介绍 单例模式是一种经常使用的软件设计模式. 在它的核心结构中仅仅包括一个被称为单例类的特殊类. 通过单例模式能够保证系统中一个类仅仅有一个实例并且该实例易于外界訪问.从而方便对实例个 ...
- spring 的redis操作类RedisTemplate
spring 集成的redis操作几乎都在RedisTemplate内了. 已spring boot为例, 再properties属性文件内配置好 redis的参数 spring.redis.host ...
随机推荐
- 关于数学问题的urls
一个知乎账号, 分析了很多的数学问题: https://www.zhihu.com/people/matongxue/activities 关于三阶样条的解析: https://blog.csdn.n ...
- Hibernate课程 初探多对多映射2-3 配置映射文件
本节主要内容:配置映射文件 Project.hbm.xml <hibernate-mapping> <class name="com.ddwei.entity.Projec ...
- jquery-fullpage插件
jquery fullpage.js全屏滚动插件/jquery-easing插件 // 前端自动化工具安装插件 在页面引入: <link rel="stylesheet" h ...
- DVB数字电视常见信号指标解释
1. 平均功率与峰值电平 峰值电平在模拟电视广播时用于表征频道信号电平强弱. 模拟电视信号是单极性.不对称的,即电视信号有一个固定黑色参考电平,比黑色亮的信号处在黑色电平线一边,同步脉冲处 ...
- SonarQube代码质量管理平台介绍与搭建
前 言 1.SonarQube的介绍 SonarQube是一个管理代码质量的开放平台. 可以从七个维度检测代码质量(为什么要用SonarQube): (1) 复杂度分布(complexity):代码复 ...
- js&jquery:添加事件的三种方法和常用的一些事件
一.添加事件的方法 1.EventTarget.addEventListener添加 获取事件目标元素,通过addEventListener函数添加 // Assuming myButton is a ...
- WebRTC协议
webrtc协议介绍 MDN webrtc协议 ICE 交互式连接建立Interactive Connectivity Establishment (ICE) 是一个允许你的浏览器和对端浏览器建立连接 ...
- Python基础学习之标识符
1.合法的Python标识符 Python标识符字符串规则和其他大部分用C编写的高级语言相似: 第一个字符必须是字母或下划线(_) 剩下的字符可以是字母和数字或下滑线 大小写敏感 标识符不能以数字开头 ...
- 概念:详细讲解url和路由概念
例如:一个网址为 http://www.abc.com/aa 定义:/aa = bb/cc/dd 那么:http://www.abc.com/aa就是一个url,那么我们可以得出:网址=url 而当我 ...
- 同步软件UltraCompare 64位 软件及注册机
软件及注册机下载: https://share.weiyun.com/f09e6243887e374ead1b3a3ab8f611a9 软件官方下载地址: https://www.ultraedit ...