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操作帮助类的更多相关文章

  1. Redis 操作帮助类

    首先从Nuget中添加StackExchange.Redis包 1.Redis连接对象管理帮助类 using Mvc.Base; using Mvc.Base.Log; using StackExch ...

  2. php的redis 操作类,适用于单台或多台、多组redis服务器操作

    redis 操作类,包括单台或多台.多组redis服务器操作,适用于业务复杂.高性能要求的 php web 应用. redis.php: <?php /* redis 操作类,适用于单台或多台. ...

  3. Redis操作Set工具类封装,Java Redis Set命令封装

    Redis操作Set工具类封装,Java Redis Set命令封装 >>>>>>>>>>>>>>>>& ...

  4. Redis操作List工具类封装,Java Redis List命令封装

    Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...

  5. Redis操作Hash工具类封装,Redis工具类封装

    Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...

  6. Redis操作字符串工具类封装,Redis工具类封装

    Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...

  7. Java的redis 操作类-优化通用版本

    java操作redis多节点处理方式;http://blog.itpub.net/29254281/viewspace-1188644/首先maven引入依赖包 <dependency> ...

  8. 设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类

    1 单例模式简单介绍 单例模式是一种经常使用的软件设计模式. 在它的核心结构中仅仅包括一个被称为单例类的特殊类. 通过单例模式能够保证系统中一个类仅仅有一个实例并且该实例易于外界訪问.从而方便对实例个 ...

  9. spring 的redis操作类RedisTemplate

    spring 集成的redis操作几乎都在RedisTemplate内了. 已spring boot为例, 再properties属性文件内配置好 redis的参数 spring.redis.host ...

随机推荐

  1. 学习.NET好书推荐

    我之前看过很多书,最近也买了些新书,无论已经看过的,还是正准备要看的,我都做了收藏.这些书涉及面较为广泛,都是平时看社区文章和技术杂志时收藏的,全部来自技术达人和架构师们的推荐,经过我的综合评估(销量 ...

  2. OC与JS交互之UIWebView

    随着H5的强大,hybrid app已经成为当前互联网的大方向,单纯的native app和web app在某些方面显得就很劣势.关于H5的发展史,这里有一篇文章推荐给大家,今天我们来学习最基础的基于 ...

  3. C++中的虚函数表

    (感谢http://blog.csdn.net/haoel/article/details/1948051/) C++中的虚函数的作用主要是实现了多态的机制. 多态,简而言之就是用父类型别的指针指向其 ...

  4. CSS之background-image:在一个元素中设置给定数量的背景图片

    众所周知,可以通过设置background-repeat的值来改变背景图片的重复次数.但有一个问题,background-repeat的值不是让图片只有1个,就是让图片铺满.如果只想设置给定数量的图片 ...

  5. python随笔--根据号码查询归属地

    给定一组(串)数据,根据输入得号码,查询归属地 def num_info(num): info0 = """5583|1860100|010|北京市|北京联通GSM卡 5 ...

  6. 工作中遇到的vscode配合eslint完成保存为eslint格式

    vscode个人设置 // vscode的个人设置配置 { "workbench.iconTheme": "vscode-icons", "workb ...

  7. Android Studio 导入 AOSP 源码

    有了 AOSP 源码,接下来就是如何看了,可以直接文本看,可以用 Source Insight,我当然选择 Android Studio,Android Studio 是我熟悉且十分强大的工具.问题来 ...

  8. 光标显示样式 css 中 cursor 属性使用

    记录一下 cursor 的各种样式,方便自己查找.之前用到不常用的每次去 百度 或 Google 找不如自己记录下好找些. cursor光标类型 auto default none context-m ...

  9. c#Winform程序调用app.config文件配置数据库连接字符串

    你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings name="  " connectionString= ...

  10. Socket连接时,端口是怎么分配的

    socket 客户端连接socket 的端口每个是唯一的,每个新的连接,端口号+1 从1024-65534 最大到65534 然后再开始循环 中间遇到已经使用的端口就跳过