redis操作幫助類
阿新 • • 發佈:2019-01-04
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); } } }