java中的redis工具类
1.redis 基础类
package com.qlchat.component.redis.template;
import javax.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
import com.qlchat.component.redis.RedisConnectionFactory;
import com.qlchat.component.redis.utils.JsonUtil;
public abstract class BasicRedisTemplate {
</span><span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">static</span> Logger logger = LoggerFactory.getLogger(BasicRedisTemplate.<span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">protected</span><span style="color: rgba(0, 0, 0, 1)"> RedisConnectionFactory connectionFactory;
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> setConnectionFactory(RedisConnectionFactory connectionFactory) {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.connectionFactory =<span style="color: rgba(0, 0, 0, 1)"> connectionFactory;
}
</span><span style="color: rgba(0, 0, 255, 1)">protected</span><span style="color: rgba(0, 0, 0, 1)"> ShardedJedisPool pool;
@PostConstruct
</span><span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> initPool() {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.pool =<span style="color: rgba(0, 0, 0, 1)"> connectionFactory.getConnectionPool();
}
@SuppressWarnings(</span>"deprecation"<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> closeRedis(ShardedJedis jedis) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (jedis != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
pool.returnResource(jedis);
} </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (Exception e) {
logger.error(</span>"Error happen when return jedis to pool, try to close it directly."<span style="color: rgba(0, 0, 0, 1)">, e);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (jedis != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis.disconnect();
} </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (Exception e1) {
}
}
}
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* 删除key, 如果key存在返回true, 否则返回false。
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">boolean</span><span style="color: rgba(0, 0, 0, 1)"> del(String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span> jedis.del(key) == 1 ? <span style="color: rgba(0, 0, 255, 1)">true</span> : <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* true if the key exists, otherwise false
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> Boolean exists(String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.exists(key);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* set key expired time
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> seconds
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Boolean expire(String key, <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> seconds) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (seconds == 0<span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span> jedis.expire(key, seconds) == 1 ? <span style="color: rgba(0, 0, 255, 1)">true</span> : <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
*
* 把object转换为json byte array
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> o
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span>
<span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">byte</span><span style="color: rgba(0, 0, 0, 1)">[] toJsonByteArray(Object o) {
String json </span>= JsonUtil.toJsonString(o) != <span style="color: rgba(0, 0, 255, 1)">null</span> ? JsonUtil.toJsonString(o) : ""<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> json.getBytes();
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
*
* 把json byte array转换为T类型object
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> b
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> clazz
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span>
<span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <T> T fromJsonByteArray(<span style="color: rgba(0, 0, 255, 1)">byte</span>[] b, Class<T><span style="color: rgba(0, 0, 0, 1)"> clazz) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (b == <span style="color: rgba(0, 0, 255, 1)">null</span> || b.length == 0<span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> JsonUtil.parseJson(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> String(b), clazz);
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span> Long ttl(<span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.ttl(key);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
}
2.String 类型 redis 工具类
package com.qlchat.component.redis.template;
import redis.clients.jedis.ShardedJedis;
import com.qlchat.component.redis.RedisException;
public class ValueRedisTemplate extends BasicRedisTemplate {
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* set key-value
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value String
* </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> RedisException
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> set(String key, String value) {
set(key, value, </span>0<span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* set key-value
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value String
* </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> RedisException
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span> set(String key, String value, <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> ttl) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
jedis.set(key, value);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (ttl > 0<span style="color: rgba(0, 0, 0, 1)">) {
jedis.expire(key.getBytes(), ttl);
}
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* set key-value For Object(NOT String)
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value Object
* </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> RedisException
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> set(String key, Object value) {
set(key, value, </span>0<span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* set key-value For Object(NOT String)
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value Object
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> ttl int
* </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> RedisException
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span> set(String key, Object value, <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> ttl) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> jedis.set(key.getBytes(), HessianSerializer.serialize(value));</span>
jedis.set(key.getBytes(), toJsonByteArray(value));
if (ttl > 0) {
jedis.expire(key.getBytes(), ttl);
}
} finally {
this.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* set key-value with expired time(s)
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> seconds
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> RedisException
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> String setex(String key, <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> seconds, String value) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.setex(key, seconds, value);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* set key-value For Object(NOT String) with expired time(s)
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> seconds
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> RedisException
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> String setex(String key, <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> seconds, Object value) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> return jedis.setex(key.getBytes(), seconds, HessianSerializer.serialize(value));</span>
<span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.setex(key.getBytes(), seconds, toJsonByteArray(value));
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* 如果key还不存在则进行设置,返回true,否则返回false.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> RedisException
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">boolean</span> setnx(String key, String value, <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> ttl) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
Long reply </span>=<span style="color: rgba(0, 0, 0, 1)"> jedis.setnx(key, value);
</span><span style="color: rgba(0, 0, 255, 1)">if</span>(reply == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">){
reply </span>= 0L<span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (ttl > 0 && reply.longValue() == 1<span style="color: rgba(0, 0, 0, 1)">) {
jedis.expire(key, ttl);
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> reply.longValue() == 1<span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* 如果key还不存在则进行设置,返回true,否则返回false.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> RedisException
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">boolean</span><span style="color: rgba(0, 0, 0, 1)"> setnx(String key, String value) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> setnx(key, value, 0<span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* 如果key还不存在则进行设置 For Object,返回true,否则返回false.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> RedisException
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">boolean</span><span style="color: rgba(0, 0, 0, 1)"> setnx(String key, Object value) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> return jedis.setnx(key.getBytes(), HessianSerializer.serialize(value)) == 1 ? true : false;</span>
<span style="color: rgba(0, 0, 255, 1)">return</span> jedis.setnx(key.getBytes(), toJsonByteArray(value)) == 1 ? <span style="color: rgba(0, 0, 255, 1)">true</span> : <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* 如果key还不存在则进行设置 For Object,返回true,否则返回false.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> RedisException
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">boolean</span> setnx(String key, Object value, <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> ttl) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> Long reply = jedis.setnx(key.getBytes(), HessianSerializer.serialize(value));</span>
Long reply =<span style="color: rgba(0, 0, 0, 1)"> jedis.setnx(key.getBytes(), toJsonByteArray(value));
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (ttl > 0<span style="color: rgba(0, 0, 0, 1)">) {
jedis.expire(key.getBytes(), ttl);
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> reply == 1<span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* 如果key不存在, 返回null.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> String get(String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.get(key);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* For Object, 如果key不存在, 返回null.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <T> T get(String key, Class<T><span style="color: rgba(0, 0, 0, 1)"> clazz) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> return (T) HessianSerializer.deserialize(jedis.get(key.getBytes()));</span>
<span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> fromJsonByteArray(jedis.get(key.getBytes()), clazz);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* 自增 +1
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)"> 返回自增后结果
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Long incr(<span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.incr(key);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* 自增 +1
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> integer 起始值
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)"> 返回自增后结果
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Long incrBy(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">long</span><span style="color: rgba(0, 0, 0, 1)"> integer) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.incrBy(key, integer);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* 自减 -1
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)"> 返回自减后结果
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Long decr(<span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.decr(key);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
}
Hash 类型 redis 工具类
package com.qlchat.component.redis.template;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import redis.clients.jedis.ShardedJedis;
public class HashRedisTemplate extends BasicRedisTemplate {
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Set the string value of a hash field
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> field
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Boolean hset(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span> String field, <span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String value) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> hset(key, field, value, 0<span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Set the string value of a hash field
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> field
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> ttl
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Boolean hset(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span> String field, <span style="color: rgba(0, 0, 255, 1)">final</span> String value, <span style="color: rgba(0, 0, 255, 1)">final</span> <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> ttl) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
Long reply </span>=<span style="color: rgba(0, 0, 0, 1)"> jedis.hset(key, field, value);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (ttl > 0<span style="color: rgba(0, 0, 0, 1)">) {
jedis.expire(key, ttl);
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> reply == 1<span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Set the Object value of a hash field
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> field
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Boolean hset(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span> String field, <span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> Object value) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> hset(key, field, value, 0<span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Set the Object value of a hash field
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> field
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> ttl
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Boolean hset(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span> String field, <span style="color: rgba(0, 0, 255, 1)">final</span> Object value, <span style="color: rgba(0, 0, 255, 1)">final</span> <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> ttl) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
Long reply </span>=<span style="color: rgba(0, 0, 0, 1)"> jedis.hset(key.getBytes(), field.getBytes(), toJsonByteArray(value));
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (ttl > 0<span style="color: rgba(0, 0, 0, 1)">) {
jedis.expire(key, ttl);
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> reply == 1<span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Get the value of a hash field
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> field
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> String hget(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String field) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> hget(key, field, 0<span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Get the value of a hash field
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> field
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> String hget(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span> String field, <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> ttl) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
String res </span>=<span style="color: rgba(0, 0, 0, 1)"> jedis.hget(key, field);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (ttl > 0<span style="color: rgba(0, 0, 0, 1)">) {
jedis.expire(key, ttl);
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> res;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Get the value of a hash field
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> field
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <T> T hget(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span> String field, <span style="color: rgba(0, 0, 255, 1)">final</span> Class<T><span style="color: rgba(0, 0, 0, 1)"> clazz) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> hget(key, field, clazz, 0<span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Get the value of a hash field
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> field
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <T> T hget(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span> String field, <span style="color: rgba(0, 0, 255, 1)">final</span> Class<T> clazz, <span style="color: rgba(0, 0, 255, 1)">final</span> <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> ttl) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
T res </span>=<span style="color: rgba(0, 0, 0, 1)"> fromJsonByteArray(jedis.hget(key.getBytes(), field.getBytes()), clazz);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (ttl > 0<span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.expire(key, ttl);
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> res;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Delete one or more hash fields
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> fields
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Boolean hdel(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String... fields) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span> jedis.hdel(key, fields) == 1 ? <span style="color: rgba(0, 0, 255, 1)">true</span> : <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Check if a hash field exists
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> field
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Boolean hexists(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String field) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.hexists(key, field);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Get all the fields and values in a hash
* 当Hash较大时候,慎用!
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Map<String, String> hgetAll(<span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.hgetAll(key);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Get all the fields and values in a hash
* 当Hash较大时候,慎用!
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Map<String, Object> hgetAllObject(<span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
Map</span><<span style="color: rgba(0, 0, 255, 1)">byte</span>[], <span style="color: rgba(0, 0, 255, 1)">byte</span>[]> byteMap =<span style="color: rgba(0, 0, 0, 1)"> jedis.hgetAll(key.getBytes());
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (byteMap != <span style="color: rgba(0, 0, 255, 1)">null</span> && byteMap.size() > 0<span style="color: rgba(0, 0, 0, 1)">) {
Map</span><String, Object> map = <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap<String, Object><span style="color: rgba(0, 0, 0, 1)">();
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (Entry<<span style="color: rgba(0, 0, 255, 1)">byte</span>[], <span style="color: rgba(0, 0, 255, 1)">byte</span>[]><span style="color: rgba(0, 0, 0, 1)"> e : byteMap.entrySet()) {
map.put(</span><span style="color: rgba(0, 0, 255, 1)">new</span> String(e.getKey()), fromJsonByteArray(e.getValue(), Object.<span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">));
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> map;
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Get all the fields and values in a hash
* 当Hash较大时候,慎用!
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <T> Map<String, T> hgetAllObject(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, Class<T><span style="color: rgba(0, 0, 0, 1)"> clazz) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
Map</span><<span style="color: rgba(0, 0, 255, 1)">byte</span>[], <span style="color: rgba(0, 0, 255, 1)">byte</span>[]> byteMap =<span style="color: rgba(0, 0, 0, 1)"> jedis.hgetAll(key.getBytes());
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (byteMap != <span style="color: rgba(0, 0, 255, 1)">null</span> && byteMap.size() > 0<span style="color: rgba(0, 0, 0, 1)">) {
Map</span><String, T> map = <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap<String, T><span style="color: rgba(0, 0, 0, 1)">();
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (Entry<<span style="color: rgba(0, 0, 255, 1)">byte</span>[], <span style="color: rgba(0, 0, 255, 1)">byte</span>[]><span style="color: rgba(0, 0, 0, 1)"> e : byteMap.entrySet()) {
map.put(</span><span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> String(e.getKey()), fromJsonByteArray(e.getValue(), clazz));
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> map;
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Get the values of all the given hash fields.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> fields
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> List<String> hmget(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String... fields) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.hmget(key, fields);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
*
* Get the value of a mulit fields
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> ttl
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> fields
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> Wifi 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Map<String, Object> hmgetObject(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span> <span style="color: rgba(0, 0, 255, 1)">int</span> ttl, <span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String... fields) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">null</span> ==<span style="color: rgba(0, 0, 0, 1)"> fields) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
}
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
List</span><<span style="color: rgba(0, 0, 255, 1)">byte</span>[]> byteList = <span style="color: rgba(0, 0, 255, 1)">new</span> ArrayList<<span style="color: rgba(0, 0, 255, 1)">byte</span>[]><span style="color: rgba(0, 0, 0, 1)">();
</span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> (String field : fields) {
byteList.add(field.getBytes());
}
List</span><<span style="color: rgba(0, 0, 255, 1)">byte</span>[]> resBytes = jedis.hmget(key.getBytes(), byteList.toArray(<span style="color: rgba(0, 0, 255, 1)">new</span> <span style="color: rgba(0, 0, 255, 1)">byte</span><span style="color: rgba(0, 0, 0, 1)">[byteList.size()][]));
Map</span><String, Object> resMap = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">null</span> !=<span style="color: rgba(0, 0, 0, 1)"> resBytes) {
resMap </span>= <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap<String, Object><span style="color: rgba(0, 0, 0, 1)">();
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = 0; i < resBytes.size(); i++<span style="color: rgba(0, 0, 0, 1)">) {
resMap.put(fields[i], fromJsonByteArray(resBytes.get(i), Object.</span><span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">));
}
}
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (ttl > 0<span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.expire(key, ttl);
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> resMap;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
*
* Get the value of a mulit fields
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> ttl
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> fields
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> Wifi 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Map<String, Object> hmgetObject(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String... fields) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> hmgetObject(key, 0<span style="color: rgba(0, 0, 0, 1)">, fields);
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Set multiple hash fields to multiple values.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> hash
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> String hmset(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span> Map<String, String><span style="color: rgba(0, 0, 0, 1)"> hash) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.hmset(key, hash);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Set multiple hash fields to multiple values.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> hash
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> String hmsetObject(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span> Map<String, Object><span style="color: rgba(0, 0, 0, 1)"> hash) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
Map</span><<span style="color: rgba(0, 0, 255, 1)">byte</span>[], <span style="color: rgba(0, 0, 255, 1)">byte</span>[]> byteMap = <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap<<span style="color: rgba(0, 0, 255, 1)">byte</span>[], <span style="color: rgba(0, 0, 255, 1)">byte</span>[]><span style="color: rgba(0, 0, 0, 1)">(hash.size());
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (Entry<String, Object><span style="color: rgba(0, 0, 0, 1)"> e : hash.entrySet()) {
byteMap.put(e.getKey().getBytes(), toJsonByteArray(e.getValue()));
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.hmset(key.getBytes(), byteMap);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Increment the integer value of a hash field by the given number.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> field
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Long hincrBy(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span> String field, <span style="color: rgba(0, 0, 255, 1)">final</span> <span style="color: rgba(0, 0, 255, 1)">long</span><span style="color: rgba(0, 0, 0, 1)"> value) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.hincrBy(key, field, value);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Get all the fields in a hash.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Set<String> hkeys(<span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.hkeys(key);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Get all the fields in a hash.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <T> Set<T> hkeys(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span> Class<T><span style="color: rgba(0, 0, 0, 1)"> clazz) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
Set</span><<span style="color: rgba(0, 0, 255, 1)">byte</span>[]> set =<span style="color: rgba(0, 0, 0, 1)"> jedis.hkeys(key.getBytes());
Set</span><T> objectSet = <span style="color: rgba(0, 0, 255, 1)">new</span> HashSet<T><span style="color: rgba(0, 0, 0, 1)">();
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (set != <span style="color: rgba(0, 0, 255, 1)">null</span> && set.size() != 0<span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">byte</span><span style="color: rgba(0, 0, 0, 1)">[] b : set) {
objectSet.add(fromJsonByteArray(b, clazz));
}
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> objectSet;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Get the number of fields in a hash.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Long hlen(<span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.hlen(key);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span> Long hsetnx(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span> String field, <span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String value) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.hsetnx(key, field, value);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
}
List 基础类型工具类
package com.qlchat.component.redis.template;
import java.util.ArrayList;
import java.util.List;
import redis.clients.jedis.ShardedJedis;
public class ListRedisTemplate extends BasicRedisTemplate {
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Prepend one or multiple values to a list
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> values
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> lpush(String key, String... values) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (values == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
jedis.lpush(key, values);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* For Object,Prepend one or multiple values to a list
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> values
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> lpush(String key, Object... values) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (values == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">byte</span>[][] strings = <span style="color: rgba(0, 0, 255, 1)">new</span> <span style="color: rgba(0, 0, 255, 1)">byte</span><span style="color: rgba(0, 0, 0, 1)">[values.length][];
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> j = 0; j < values.length; j++<span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> strings[j] = HessianSerializer.serialize(values[j]);</span>
strings[j] =<span style="color: rgba(0, 0, 0, 1)"> toJsonByteArray(values[j]);
}
jedis.lpush(key.getBytes(), strings);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* For single Object,Prepend one or multiple values to a list
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> values
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> lpushForObject(String key, Object value) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (value == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> jedis.lpush(key.getBytes(), HessianSerializer.serialize(value));</span>
jedis.lpush(key.getBytes(), toJsonByteArray(value));
} finally {
this.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* For single Object,Prepend one or multiple values to a list
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> values
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> rpushForObject(String key, Object value) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (value == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> jedis.rpush(key.getBytes(), HessianSerializer.serialize(value));</span>
jedis.rpush(key.getBytes(), toJsonByteArray(value));
} finally {
this.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Append one or multiple values to a list
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> values
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> rpush(String key, String... values) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (values == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
jedis.rpush(key, values);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* For Object, Append one or multiple values to a list
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> values
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> rpush(String key, Object... values) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (values == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">byte</span>[][] strings = <span style="color: rgba(0, 0, 255, 1)">new</span> <span style="color: rgba(0, 0, 255, 1)">byte</span><span style="color: rgba(0, 0, 0, 1)">[values.length][];
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> j = 0; j < values.length; j++<span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> strings[j] = HessianSerializer.serialize(values[j]);</span>
strings[j] =<span style="color: rgba(0, 0, 0, 1)"> toJsonByteArray(values[j]);
}
jedis.rpush(key.getBytes(), strings);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Remove and get the last element in a list
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> String rpop(String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.rpop(key);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* For Object, Remove and get the last element in a list
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> clazz
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <T> T rpop(String key, Class<T><span style="color: rgba(0, 0, 0, 1)"> clazz) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> return (T) HessianSerializer.deserialize(jedis.rpop(key.getBytes()));</span>
<span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> fromJsonByteArray(jedis.rpop(key.getBytes()), clazz);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Remove and get the first element in a list
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> String lpop(String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.lpop(key);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* For Object, Remove and get the first element in a list
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> clazz
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <T> T lpop(String key, Class<T><span style="color: rgba(0, 0, 0, 1)"> clazz) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> return (T) HessianSerializer.deserialize(jedis.lpop(key.getBytes()));</span>
<span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> fromJsonByteArray(jedis.lpop(key.getBytes()), clazz);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Get the length of a list
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> Long llen(String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.llen(key);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* 删除List中的等于value的元素
*
* count = 1 :删除第一个; count = 0 :删除所有; count = -1:删除最后一个;
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> count
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Long lrem(String key, <span style="color: rgba(0, 0, 255, 1)">long</span><span style="color: rgba(0, 0, 0, 1)"> count, String value) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.lrem(key, count, value);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* FOR Object, 删除List中的等于value的元素
*
* count = 1 :删除第一个; count = 0 :删除所有; count = -1:删除最后一个;
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> count
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> value
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Long lrem(String key, <span style="color: rgba(0, 0, 255, 1)">long</span><span style="color: rgba(0, 0, 0, 1)"> count, Object value) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> return jedis.lrem(key.getBytes(), count, HessianSerializer.serialize(value));</span>
<span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.lrem(key.getBytes(), count, toJsonByteArray(value));
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Get a range of elements from a list.
* <P>
* For example LRANGE foobar 0 2 will return the first three elements of the list.
* </p>
* <P>
* For example LRANGE foobar -1 -2 will return the last two elements of the list.
* </p>
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> start
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> end
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> List<String> lrange(String key, <span style="color: rgba(0, 0, 255, 1)">long</span> start, <span style="color: rgba(0, 0, 255, 1)">long</span><span style="color: rgba(0, 0, 0, 1)"> end) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.lrange(key, start, end);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* For Object, Get a range of elements from a list.
* <P>
* For example LRANGE foobar 0 2 will return the first three elements of the list.
* </p>
* <P>
* For example LRANGE foobar -1 -2 will return the last two elements of the list.
* </p>
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> start
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> end
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <T> List<T> lrange(String key, <span style="color: rgba(0, 0, 255, 1)">long</span> start, <span style="color: rgba(0, 0, 255, 1)">long</span> end, Class<T><span style="color: rgba(0, 0, 0, 1)"> clazz) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
List</span><<span style="color: rgba(0, 0, 255, 1)">byte</span>[]> list =<span style="color: rgba(0, 0, 0, 1)"> jedis.lrange(key.getBytes(), start, end);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (list != <span style="color: rgba(0, 0, 255, 1)">null</span> && list.size() > 0<span style="color: rgba(0, 0, 0, 1)">) {
List</span><T> results = <span style="color: rgba(0, 0, 255, 1)">new</span> ArrayList<><span style="color: rgba(0, 0, 0, 1)">();
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">byte</span><span style="color: rgba(0, 0, 0, 1)">[] bytes : list) {
results.add(fromJsonByteArray(bytes, clazz));
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> results;
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span> String ltrim(String key, <span style="color: rgba(0, 0, 255, 1)">long</span> start, <span style="color: rgba(0, 0, 255, 1)">long</span><span style="color: rgba(0, 0, 0, 1)"> end) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.ltrim(key, start, end);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
}
set 基础类型工具类
package com.qlchat.component.redis.template;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import redis.clients.jedis.ShardedJedis;
/**
*
- <b><code>SetRedisTemplate</code></b>
- <p>
- Set 数据结构的常用方法封装,支持 Object 类型
- </p>
- <b>Creation Time:</b> 2016 年 10 月 12 日 下午 5:51:46
*/
public class SetRedisTemplate extends BasicRedisTemplate {
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Add one or more members to a set
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> members
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Boolean sadd(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String... members) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span> jedis.sadd(key, members) == 1 ? <span style="color: rgba(0, 0, 255, 1)">true</span> : <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Add one or more members to a set
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> ttl
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> members
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Boolean sadd(<span style="color: rgba(0, 0, 255, 1)">final</span> String key,<span style="color: rgba(0, 0, 255, 1)">int</span> ttl, <span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String... members) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
Boolean ret </span>= jedis.sadd(key, members) == 1 ? <span style="color: rgba(0, 0, 255, 1)">true</span> : <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (ret && ttl > 0<span style="color: rgba(0, 0, 0, 1)">) {
jedis.expire(key, ttl);
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> ret;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* For Object, Add one or more members to a set
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> members
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Boolean sadd(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> Object... members) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">byte</span>[][] strings = <span style="color: rgba(0, 0, 255, 1)">new</span> <span style="color: rgba(0, 0, 255, 1)">byte</span><span style="color: rgba(0, 0, 0, 1)">[members.length][];
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> j = 0; j < members.length; j++<span style="color: rgba(0, 0, 0, 1)">) {
strings[j] </span>=<span style="color: rgba(0, 0, 0, 1)"> toJsonByteArray(members[j]);
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> jedis.sadd(key.getBytes(), strings) == 1 ? <span style="color: rgba(0, 0, 255, 1)">true</span> : <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Remove one or more members from a set
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> members
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Boolean srem(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String... members) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span> jedis.srem(key, members) == 1 ? <span style="color: rgba(0, 0, 255, 1)">true</span> : <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* For Object, Remove one or more members from a set
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> members
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Boolean srem(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> Object... members) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">byte</span>[][] strings = <span style="color: rgba(0, 0, 255, 1)">new</span> <span style="color: rgba(0, 0, 255, 1)">byte</span><span style="color: rgba(0, 0, 0, 1)">[members.length][];
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> j = 0; j < members.length; j++<span style="color: rgba(0, 0, 0, 1)">) {
strings[j] </span>=<span style="color: rgba(0, 0, 0, 1)"> toJsonByteArray(members[j]);
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> jedis.srem(key.getBytes(), strings) == 1 ? <span style="color: rgba(0, 0, 255, 1)">true</span> : <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Get all the members in a set.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Set<String> smembers(<span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.smembers(key);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* For Object, Get all the members in a set.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> clazz
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <T> Set<T> smembers(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, Class<T><span style="color: rgba(0, 0, 0, 1)"> clazz) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
Set</span><<span style="color: rgba(0, 0, 255, 1)">byte</span>[]> tempSet =<span style="color: rgba(0, 0, 0, 1)"> jedis.smembers(key.getBytes());
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (tempSet != <span style="color: rgba(0, 0, 255, 1)">null</span> && tempSet.size() > 0<span style="color: rgba(0, 0, 0, 1)">) {
TreeSet</span><T> result = <span style="color: rgba(0, 0, 255, 1)">new</span> TreeSet<T><span style="color: rgba(0, 0, 0, 1)">();
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">byte</span><span style="color: rgba(0, 0, 0, 1)">[] value : tempSet) {
result.add(fromJsonByteArray(value, clazz));
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> result;
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* Get all the members is number in a set.
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Long scard(<span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.scard(key);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* true if the meber exists in a set,else false
*
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> key
* </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> member
* </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)">
* </span><span style="color: rgba(128, 128, 128, 1)">@since</span><span style="color: rgba(0, 128, 0, 1)"> qlchat 1.0
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> Boolean sismember(<span style="color: rgba(0, 0, 255, 1)">final</span> String key, <span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String member) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.sismember(key, member);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span> String spop(<span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> String key) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.spop(key);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span> List<String> srandmember(<span style="color: rgba(0, 0, 255, 1)">final</span> String key,<span style="color: rgba(0, 0, 255, 1)">final</span> <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> count) {
ShardedJedis jedis </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
jedis </span>=<span style="color: rgba(0, 0, 0, 1)"> pool.getResource();
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> jedis.srandmember(key, count);
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.closeRedis(jedis);
}
}
}
Zset 工具类
package com.qlchat.component.redis.template;
import com.alibaba.fastjson.JSON;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.Tuple;
import java.util.*;
/**
*
-
<b><code>ZSetRedisTemplate</code></b>
-
<p>
-
Sorted Sets 数据结构的常用方法封装,支持 Object 类型
-
</p>
-
<b>Creation Time:</b> 2016 年 10 月 12 日 下午 5:54:09
-
@author abin.yao
-
@since qlchat 1.0
*/
public class ZSetRedisTemplate extends BasicRedisTemplate {
/**
- 加入 Sorted set, 如果 member 在 Set 里已存在, 只更新 score 并返回 false, 否则返回 true.
- @param key
- @param member
- @param score
- @return
- @since qlchat 1.0
*/
public Boolean zadd(String key, double score, String member) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zadd(key, score, member) == 1 ? true : false;
} finally {
this.closeRedis(jedis);
}
}
/**
- 加入 Sorted set, 如果 member 在 Set 里已存在, 只更新 score 并返回 false, 否则返回 true.
- @param key
- @param member
- @param score
- @param ttl 过期时间,秒
- @return
- @since qlchat 1.0
*/
public Boolean zadd(final String key,final double score,final int ttl,final String member) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
Boolean ret = jedis.zadd(key, score, member) == 1 ? true : false;
if (ret && ttl > 0) {
jedis.expire(key, ttl);
}
return ret;
} finally {
this.closeRedis(jedis);
}
}
/**
- For Object, 加入 Sorted set, 如果 member 在 Set 里已存在, 只更新 score 并返回 false, 否则返回 true.
- @param key
- @param member
- @param score
- @return
- @since qlchat 1.0
*/
public Boolean zadd(String key, double score, Object member) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
// return jedis.zadd(key.getBytes(), score, HessianSerializer.serialize(member)) == 1 ? true : false;
return jedis.zadd(key.getBytes(), score, toJsonByteArray(member)) == 1 ? true : false;
} finally {
this.closeRedis(jedis);
}
}
/**
- Return a range of members in a sorted set, by index. Ordered from the lowest to the highest score.
- @param key
- @param start
- @param end
- @return Ordered from the lowest to the highest score.
- @since qlchat 1.0
*/
public Set<String> zrange(String key, long start, long end) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zrange(key, start, end);
} finally {
this.closeRedis(jedis);
}
}
/**
- For Object, Return a range of members in a sorted set, by index.Ordered from the lowest to the highest score.
- @param key
- @param start
- @param end
- @return Ordered from the lowest to the highest score.
- @since qlchat 1.0
*/
public <T> List<T> zrange(String key, long start, long end, Class<T> clazz) {
List<T> result = new ArrayList<>();
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
Set<byte[]> tempSet = jedis.zrange(key.getBytes(), start, end);
if (tempSet != null && tempSet.size() > 0) {
for (byte[] value : tempSet) {
// result.add((T) HessianSerializer.deserialize(value));
result.add(fromJsonByteArray(value, clazz));
}
return result;
}
return null;
} finally {
this.closeRedis(jedis);
}
}
/**
- Return a range of members in a sorted set, by index. Ordered from the highest to the lowest score.
- @param key
- @param start
- @param end
- @return Ordered from the highest to the lowest score.
- @since qlchat 1.0
*/
public Set<String> zrevrange(String key, long start, long end) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zrevrange(key, start, end);
} finally {
this.closeRedis(jedis);
}
}
/**
- For Object, Return a range of members in a sorted set, by index. Ordered from the highest to the lowest score.
- @param key
- @param start
- @param end
- @param clazz
- @return Ordered from the highest to the lowest score.
- @since qlchat 1.0
*/
public <T> List<T> zrevrange(String key, long start, long end, Class<T> clazz) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
Set<byte[]> tempSet = jedis.zrevrange(key.getBytes(), start, end);
if (tempSet != null && tempSet.size() > 0) {
List<T> result = new ArrayList<>();
for (byte[] value : tempSet) {
// result.add((T) HessianSerializer.deserialize(value));
result.add(fromJsonByteArray(value, clazz));
}
return result;
}
return null;
} finally {
this.closeRedis(jedis);
}
}
/**
- Return the all the elements in the sorted set at key with a score between
- min and max (including elements with score equal to min or max).
- @param key
- @param min
- @param max
- @return Ordered from the lowest to the highest score.
- @since qlchat 1.0
*/
public Set<String> zrangeByScore(final String key, final double min, final double max) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zrangeByScore(key, min, max);
} finally {
this.closeRedis(jedis);
}
}
/**
- For Object, Return the all the elements in the sorted set at key with a score between
- min and max (including elements with score equal to min or max).
- @param key
- @param min
- @param max
- @return Ordered from the lowest to the highest score.
- @since qlchat 1.0
*/
public <T> Set<T> zrangeHashSetByScore(final String key, final double min, final double max, Class<T> clazz) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
Set<byte[]> tempSet = jedis.zrangeByScore(key.getBytes(), min, max);
if (tempSet != null && tempSet.size() > 0) {
HashSet<T> result = new HashSet<T>();
for (byte[] value : tempSet) {
// result.add((T) HessianSerializer.deserialize(value));
result.add(fromJsonByteArray(value, clazz));
}
return result;
}
return null;
} finally {
this.closeRedis(jedis);
}
}
/**
- Return the all the elements in the sorted set at key with a score between
- min and max (including elements with score equal to min or max).
- @param key
- @param min
- @param max
- @return Ordered from the highest to the lowest score.
- @since qlchat 1.0
*/
public Set<String> zrevrangeByScore(final String key, final double min, final double max) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zrevrangeByScore(key, max, min);
} finally {
this.closeRedis(jedis);
}
}
/**
- For Object, Return the all the elements in the sorted set at key with a score between
- min and max (including elements with score equal to min or max).
- @param key
- @param min
- @param max
- @return Ordered from the lowest to the highest score.
- @since qlchat 1.0
*/
public <T> List<T> zrangeByScore(final String key, final double min, final double max, Class<T> clazz) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
Set<byte[]> tempSet = jedis.zrangeByScore(key.getBytes(), min, max);
if (tempSet != null && tempSet.size() > 0) {
List<T> result = new ArrayList<>();
for (byte[] value : tempSet) {
result.add(fromJsonByteArray(value, clazz));
}
return result;
}
return null;
} finally {
this.closeRedis(jedis);
}
}
public <T> List<T> zrangeByScore(final String key, final double min, final double max, final int offset, final int count, Class<T> clazz) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
Set<byte[]> tempSet = jedis.zrangeByScore(key.getBytes(), min, max, offset, count);
if (tempSet != null && tempSet.size() > 0) {
List<T> result = new ArrayList<>();
for (byte[] value : tempSet) {
result.add(fromJsonByteArray(value, clazz));
}
return result;
}
return null;
} finally {
this.closeRedis(jedis);
}
}
/**
- Return a range of members with scores in a sorted set, by index. Ordered from the lowest to the highest score.
- @param key
- @param start
- @param end
- @return
- @since qlchat 1.0
*/
public Set<Tuple> zrangeWithScores(final String key, final long start, final long end) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zrangeWithScores(key, start, end);
} finally {
this.closeRedis(jedis);
}
}
/**
- Return a range of members with scores in a sorted set, by index. Ordered from the highest to the lowest score.
- @param key
- @param start
- @param end
- @return
- @since qlchat 1.0
*/
public Set<Tuple> zrevrangeWithScores(final String key, final long start, final long end) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zrevrangeWithScores(key, start, end);
} finally {
this.closeRedis(jedis);
}
}
/**
- Return the all the elements in the sorted set at key with a score between
- min and max (including elements with score equal to min or max). Ordered from the lowest to the highest score.
- @param key
- @param min
- @param max
- @return Ordered from the lowest to the highest score.
- @since qlchat 1.0
*/
public Set<Tuple> zrangeByScoreWithScores(final String key, final double min, final double max) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zrangeByScoreWithScores(key, min, max);
} finally {
this.closeRedis(jedis);
}
}
public Set<Tuple> zrangeByScoreWithScores(final String key, final double min, final double max, final int offset, final int count) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zrangeByScoreWithScores(key, min, max, offset, count);
} finally {
this.closeRedis(jedis);
}
}
/**
- Return the all the elements in the sorted set at key with a score between
- min and max (including elements with score equal to min or max). Ordered from the highest to the lowest score.
- @param key
- @param min
- @param max
- @return Ordered from the highest to the lowest score.
- @since qlchat 1.0
*/
public Set<Tuple> zrevrangeByScoreWithScores(final String key, final double min, final double max) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zrevrangeByScoreWithScores(key, max, min);
} finally {
this.closeRedis(jedis);
}
}
public Set<Tuple> zrevrangeByScoreWithScores(final String key, final double min, final double max, final int offset, final int count) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zrevrangeByScoreWithScores(key, max, min, offset, count);
} finally {
this.closeRedis(jedis);
}
}
/**
- Remove one or more members from a sorted set
- @param key
- @param members
- @return
- @since qlchat 1.0
*/
public Boolean zrem(final String key, final String... members) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zrem(key, members) == 1 ? true : false;
} finally {
this.closeRedis(jedis);
}
}
/**
- For Object, Remove one or more members from a sorted set
- @param key
- @param members
- @return
- @since qlchat 1.0
*/
public Boolean zrem(final String key, final Object... members) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
byte[][] strings = new byte[members.length][];
for (int j = 0; j < members.length; j++) {
// strings[j] = HessianSerializer.serialize(members[j]);
strings[j] = toJsonByteArray(members[j]);
}
return jedis.zrem(key.getBytes(), strings) == 1 ? true : false;
} finally {
this.closeRedis(jedis);
}
}
/**
- Get the score associated with the given member in a sorted set
- @param key
- @param member
- @return
- @since qlchat 1.0
*/
public Double zscore(final String key, final String member) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zscore(key, member);
} finally {
this.closeRedis(jedis);
}
}
/**
- For ObjecGet the score associated with the given member in a sorted set
- @param key
- @param member
- @return
- @since qlchat 1.0
*/
public Double zscore(final String key, final Object member) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
// return jedis.zscore(key.getBytes(), HessianSerializer.serialize(member));
return jedis.zscore(key.getBytes(), toJsonByteArray(member));
} finally {
this.closeRedis(jedis);
}
}
/**
- Remove all elements in the sorted set at key with rank between start and
- end. Start and end are 0-based with rank 0 being the element with the
- lowest score. Both start and end can be negative numbers, where they
- indicate offsets starting at the element with the highest rank. For
- example: -1 is the element with the highest score, -2 the element with
- the second highest score and so forth.
- <p>
- <b>Time complexity:</b> O(log(N))+O(M) with N being the number of
- elements in the sorted set and M the number of elements removed by the
- operation
- @param key
- @param start
- @param end
- @return
- @since qlchat 1.0
*/
public Long zremrangeByRank(String key, long start, long end) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zremrangeByRank(key, start, end);
} finally {
this.closeRedis(jedis);
}
}
/**
*
- Get the length of a sorted set
- @param key
- @param min
- @param max
- @return
- @since qlchat 1.0
*/
public Long zcount(final String key, final double min, final double max) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zcount(key, min, max);
} finally {
this.closeRedis(jedis);
}
}
/**
- Get the number of members in a sorted set
- @param key key
- @return Long
*/
public Long zcard(final String key) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zcard(key);
} finally {
this.closeRedis(jedis);
}
}
public <T> List<T> zrevrangeByScore(String key, double max, double min, Class<T> clazz) {
List<T> result = new ArrayList<T>();
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
Set<String> sets = jedis.zrevrangeByScore(key, max, min);
if (null == sets || sets.size() == 0) {
return result;
}
for (String s : sets) {
result.add(JSON.parseObject(s, clazz));
}
} catch (Exception e) {
e.printStackTrace();
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">if</span>(jedis != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {jedis.close();}
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> result;
}
public <T> List<T> zrevrangeByScore(String key, double max, double min, int offset, int count, Class<T> clazz) {
List<T> result = new ArrayList<T>();
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
Set<String> sets = jedis.zrevrangeByScore(key, max, min, offset, count);
if (null == sets || sets.size() == 0) {
return result;
}
for (String s : sets) {
result.add(JSON.parseObject(s, clazz));
}
} catch (Exception e) {
e.printStackTrace();
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">if</span>(jedis != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {jedis.close();}
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> result;
}
public List<String> zrevrangeByScore(String key, double max, double min, int offset, int count) {
List<String> result = new ArrayList<>();
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
Set<String> sets = jedis.zrevrangeByScore(key, max, min, offset, count);
if (null == sets || sets.size() == 0) {
return result;
}
for (String s : sets) {
result.add(s);
}
} catch (Exception e) {
e.printStackTrace();
} </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">if</span>(jedis != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {jedis.close();}
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> result;
}
public Set<String> zrangeByScore(String key, double max, double min, int offset, int count) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zrangeByScore(key, min, max, offset, count);
} finally {
this.closeRedis(jedis);
}
}
public Long zremrangeByScore(String key, double start, double end) {
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
return jedis.zremrangeByScore(key, start, end);
}finally {
this.closeRedis(jedis);
}
}
public Map<String,Object> zrevrankWithScore(String key,String element){
ShardedJedis jedis = null;
Map<String,Object> map = new HashMap<>();
try{
Long rankIndex = jedis.zrevrank(key,element);
Double score = jedis.zscore(key,element);
if(rankIndex != null && score >0){
map.put("rank",rankIndex+1);
map.put("score",score);
}
}catch (Exception e){
e.printStackTrace();
}finally {
this.closeRedis(jedis);
}
return map;
}
}
HyperLogLog 模板
package com.qlchat.component.redis.template;
import redis.clients.jedis.ShardedJedis;
/**
-
HyperLogLog 模板
-
Created by liujunjie on 16-12-15.
*/
public class HyperLogLogTemplate extends BasicRedisTemplate {
/**
- 添加
- @param key key
- @param elements 元素
*/
public Long pfadd(String key, String... elements) {
ShardedJedis jedis = null;
try{
jedis = pool.getResource();
return jedis.pfadd(key, elements);
} finally {
this.closeRedis(jedis);
}
}
/**
- 统计
- @param key key
- @return long
*/
public long pfcount(String key) {
ShardedJedis jedis = null;
try{
jedis = pool.getResource();
return jedis.pfcount(key);
} finally {
this.closeRedis(jedis);
}
}
}