redis客户端之jedis 操作工具类

redis客户端之jedis 操作工具类

包括连接池的使用及 jedis对string 、set、sortset、list、hash的所有常规操作。

redis.properties文件:


 
 
  1. #\u63A7\u5236\u4E00\u4E2Apool\u53EF\u5206\u914D\u591A\u5C11\u4E2Ajedis\u5B9E\u4F8B\uFF0C\u901A\u8FC7pool.getResource()\u6765\u83B7\u53D6\uFF1B\u5982\u679C\u8D4B\u503C\u4E3A-1\uFF0C\u5219\u8868\u793A\u4E0D\u9650\u5236\uFF1B\u5982\u679Cpool\u5DF2\u7ECF\u5206\u914D\u4E86maxActive\u4E2Ajedis\u5B9E\u4F8B\uFF0C\u5219\u6B64\u65F6pool\u7684\u72B6\u6001\u5C31\u6210exhausted\u4E86\uFF0C\u5728JedisPoolConfig
  2. redis.pool.maxActive=1024
  3. #\u63A7\u5236\u4E00\u4E2Apool\u6700\u591A\u6709\u591A\u5C11\u4E2A\u72B6\u6001\u4E3Aidle\u7684jedis\u5B9E\u4F8B\uFF1B
  4. redis.pool.maxIdle=200
  5. #\u8868\u793A\u5F53borrow\u4E00\u4E2Ajedis\u5B9E\u4F8B\u65F6\uFF0C\u6700\u5927\u7684\u7B49\u5F85\u65F6\u95F4\uFF0C\u5982\u679C\u8D85\u8FC7\u7B49\u5F85\u65F6\u95F4\uFF0C\u5219\u76F4\u63A5\u629B\u51FAJedisConnectionException\uFF1B
  6. redis.pool.maxWait=1000
  7. #\u5728borrow\u4E00\u4E2Ajedis\u5B9E\u4F8B\u65F6\uFF0C\u662F\u5426\u63D0\u524D\u8FDB\u884Calidate\u64CD\u4F5C\uFF1B\u5982\u679C\u4E3Atrue\uFF0C\u5219\u5F97\u5230\u7684jedis\u5B9E\u4F8B\u5747\u662F\u53EF\u7528\u7684\uFF1B
  8. redis.pool.testOnBorrow=true
  9. #\u5728return\u7ED9pool\u65F6\uFF0C\u662F\u5426\u63D0\u524D\u8FDB\u884Cvalidate\u64CD\u4F5C\uFF1B
  10. redis.pool.testOnReturn=true
  11. #ip
  12. redis.ip=yourip
  13. #port
  14. redis.port=6379
  15. #password
  16. redis.password=yourword


 
 
  1. package com.test.util;
  2. import java.util.List;
  3. import java.util.Map;
  4. import java.util.Set;
  5. import org.apache.log4j.Logger;
  6. import com.test.constants.JRedisPoolConfig;
  7. import redis.clients.jedis.Jedis;
  8. import redis.clients.jedis.JedisPool;
  9. import redis.clients.jedis.JedisPoolConfig;
  10. import redis.clients.jedis.SortingParams;
  11. import redis.clients.jedis.BinaryClient.LIST_POSITION;
  12. import redis.clients.util.SafeEncoder;
  13. /**
  14. * @author Mr.hu
  15. * @version crateTime:2013-10-30 下午5:41:30
  16. * Class Explain:JedisUtil
  17. */
  18. public class JedisUtil {
  19. private Logger log = Logger.getLogger( this.getClass());
  20. /**缓存生存时间 */
  21. private final int expire = 60000;
  22. /** 操作Key的方法 */
  23. public Keys KEYS;
  24. /** 对存储结构为String类型的操作 */
  25. public Strings STRINGS;
  26. /** 对存储结构为List类型的操作 */
  27. public Lists LISTS;
  28. /** 对存储结构为Set类型的操作 */
  29. public Sets SETS;
  30. /** 对存储结构为HashMap类型的操作 */
  31. public Hash HASH;
  32. /** 对存储结构为Set(排序的)类型的操作 */
  33. public SortSet SORTSET;
  34. private static JedisPool jedisPool = null;
  35. private JedisUtil() {
  36. }
  37. static {
  38. JedisPoolConfig config = new JedisPoolConfig();
  39. config.setMaxActive(JRedisPoolConfig.MAX_ACTIVE);
  40. config.setMaxIdle(JRedisPoolConfig.MAX_IDLE);
  41. config.setMaxWait(JRedisPoolConfig.MAX_WAIT);
  42. config.setTestOnBorrow(JRedisPoolConfig.TEST_ON_BORROW);
  43. config.setTestOnReturn(JRedisPoolConfig.TEST_ON_RETURN);
  44. //redis如果设置了密码:
  45. jedisPool = new JedisPool(config, JRedisPoolConfig.REDIS_IP,
  46. JRedisPoolConfig.REDIS_PORT,
  47. 10000,JRedisPoolConfig.REDIS_PASSWORD);
  48. //redis未设置了密码:
  49. // jedisPool = new JedisPool(config, JRedisPoolConfig.REDIS_IP,
  50. // JRedisPoolConfig.REDIS_PORT);
  51. }
  52. public JedisPool getPool() {
  53. return jedisPool;
  54. }
  55. /**
  56. * 从jedis连接池中获取获取jedis对象
  57. * @return
  58. */
  59. public Jedis getJedis() {
  60. return jedisPool.getResource();
  61. }
  62. private static final JedisUtil jedisUtil = new JedisUtil();
  63. /**
  64. * 获取JedisUtil实例
  65. * @return
  66. */
  67. public static JedisUtil getInstance() {
  68. return jedisUtil;
  69. }
  70. /**
  71. * 回收jedis
  72. * @param jedis
  73. */
  74. public void returnJedis(Jedis jedis) {
  75. jedisPool.returnResource(jedis);
  76. }
  77. /**
  78. * 设置过期时间
  79. * @author ruan 2013-4-11
  80. * @param key
  81. * @param seconds
  82. */
  83. public void expire(String key, int seconds) {
  84. if (seconds <= 0) {
  85. return;
  86. }
  87. Jedis jedis = getJedis();
  88. jedis.expire(key, seconds);
  89. returnJedis(jedis);
  90. }
  91. /**
  92. * 设置默认过期时间
  93. * @author ruan 2013-4-11
  94. * @param key
  95. */
  96. public void expire(String key) {
  97. expire(key, expire);
  98. }
  99. //*******************************************Keys*******************************************//
  100. public class Keys {
  101. /**
  102. * 清空所有key
  103. */
  104. public String flushAll() {
  105. Jedis jedis = getJedis();
  106. String stata = jedis.flushAll();
  107. returnJedis(jedis);
  108. return stata;
  109. }
  110. /**
  111. * 更改key
  112. * @param String oldkey
  113. * @param String newkey
  114. * @return 状态码
  115. * */
  116. public String rename(String oldkey, String newkey) {
  117. return rename(SafeEncoder.encode(oldkey),
  118. SafeEncoder.encode(newkey));
  119. }
  120. /**
  121. * 更改key,仅当新key不存在时才执行
  122. * @param String oldkey
  123. * @param String newkey
  124. * @return 状态码
  125. * */
  126. public long renamenx(String oldkey, String newkey) {
  127. Jedis jedis = getJedis();
  128. long status = jedis.renamenx(oldkey, newkey);
  129. returnJedis(jedis);
  130. return status;
  131. }
  132. /**
  133. * 更改key
  134. * @param String oldkey
  135. * @param String newkey
  136. * @return 状态码
  137. * */
  138. public String rename(byte[] oldkey, byte[] newkey) {
  139. Jedis jedis = getJedis();
  140. String status = jedis.rename(oldkey, newkey);
  141. returnJedis(jedis);
  142. return status;
  143. }
  144. /**
  145. * 设置key的过期时间,以秒为单位
  146. * @param String key
  147. * @param 时间,已秒为单位
  148. * @return 影响的记录数
  149. * */
  150. public long expired(String key, int seconds) {
  151. Jedis jedis = getJedis();
  152. long count = jedis.expire(key, seconds);
  153. returnJedis(jedis);
  154. return count;
  155. }
  156. /**
  157. * 设置key的过期时间,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00,格里高利历)的偏移量。
  158. * @param String key
  159. * @param 时间,已秒为单位
  160. * @return 影响的记录数
  161. * */
  162. public long expireAt(String key, long timestamp) {
  163. Jedis jedis = getJedis();
  164. long count = jedis.expireAt(key, timestamp);
  165. returnJedis(jedis);
  166. return count;
  167. }
  168. /**
  169. * 查询key的过期时间
  170. * @param String key
  171. * @return 以秒为单位的时间表示
  172. * */
  173. public long ttl(String key) {
  174. //ShardedJedis sjedis = getShardedJedis();
  175. Jedis sjedis=getJedis();
  176. long len = sjedis.ttl(key);
  177. returnJedis(sjedis);
  178. return len;
  179. }
  180. /**
  181. * 取消对key过期时间的设置
  182. * @param key
  183. * @return 影响的记录数
  184. * */
  185. public long persist(String key) {
  186. Jedis jedis = getJedis();
  187. long count = jedis.persist(key);
  188. returnJedis(jedis);
  189. return count;
  190. }
  191. /**
  192. * 删除keys对应的记录,可以是多个key
  193. * @param String ... keys
  194. * @return 删除的记录数
  195. * */
  196. public long del(String... keys) {
  197. Jedis jedis = getJedis();
  198. long count = jedis.del(keys);
  199. returnJedis(jedis);
  200. return count;
  201. }
  202. /**
  203. * 删除keys对应的记录,可以是多个key
  204. * @param String .. keys
  205. * @return 删除的记录数
  206. * */
  207. public long del(byte[]... keys) {
  208. Jedis jedis = getJedis();
  209. long count = jedis.del(keys);
  210. returnJedis(jedis);
  211. return count;
  212. }
  213. /**
  214. * 判断key是否存在
  215. * @param String key
  216. * @return boolean
  217. * */
  218. public boolean exists(String key) {
  219. //ShardedJedis sjedis = getShardedJedis();
  220. Jedis sjedis=getJedis();
  221. boolean exis = sjedis.exists(key);
  222. returnJedis(sjedis);
  223. return exis;
  224. }
  225. /**
  226. * 对List,Set,SortSet进行排序,如果集合数据较大应避免使用这个方法
  227. * @param String key
  228. * @return List<String> 集合的全部记录
  229. * **/
  230. public List<String> sort(String key) {
  231. //ShardedJedis sjedis = getShardedJedis();
  232. Jedis sjedis=getJedis();
  233. List<String> list = sjedis.sort(key);
  234. returnJedis(sjedis);
  235. return list;
  236. }
  237. /**
  238. * 对List,Set,SortSet进行排序或limit
  239. * @param String key
  240. * @param SortingParams parame 定义排序类型或limit的起止位置.
  241. * @return List<String> 全部或部分记录
  242. * **/
  243. public List<String> sort(String key, SortingParams parame) {
  244. //ShardedJedis sjedis = getShardedJedis();
  245. Jedis sjedis=getJedis();
  246. List<String> list = sjedis.sort(key, parame);
  247. returnJedis(sjedis);
  248. return list;
  249. }
  250. /**
  251. * 返回指定key存储的类型
  252. * @param String key
  253. * @return String string|list|set|zset|hash
  254. * **/
  255. public String type(String key) {
  256. //ShardedJedis sjedis = getShardedJedis();
  257. Jedis sjedis=getJedis();
  258. String type = sjedis.type(key);
  259. returnJedis(sjedis);
  260. return type;
  261. }
  262. /**
  263. * 查找所有匹配给定的模式的键
  264. * @param String key的表达式,*表示多个,?表示一个
  265. * */
  266. public Set<String> keys(String pattern) {
  267. Jedis jedis = getJedis();
  268. Set<String> set = jedis.keys(pattern);
  269. returnJedis(jedis);
  270. return set;
  271. }
  272. }
  273. //*******************************************Sets*******************************************//
  274. public class Sets {
  275. /**
  276. * 向Set添加一条记录,如果member已存在返回0,否则返回1
  277. * @param String key
  278. * @param String member
  279. * @return 操作码,0或1
  280. * */
  281. public long sadd(String key, String member) {
  282. Jedis jedis = getJedis();
  283. long s = jedis.sadd(key, member);
  284. returnJedis(jedis);
  285. return s;
  286. }
  287. public long sadd(byte[] key, byte[] member) {
  288. Jedis jedis = getJedis();
  289. long s = jedis.sadd(key, member);
  290. returnJedis(jedis);
  291. return s;
  292. }
  293. /**
  294. * 获取给定key中元素个数
  295. * @param String key
  296. * @return 元素个数
  297. * */
  298. public long scard(String key) {
  299. //ShardedJedis sjedis = getShardedJedis();
  300. Jedis sjedis = getJedis();
  301. long len = sjedis.scard(key);
  302. returnJedis(sjedis);
  303. return len;
  304. }
  305. /**
  306. * 返回从第一组和所有的给定集合之间的差异的成员
  307. * @param String ... keys
  308. * @return 差异的成员集合
  309. * */
  310. public Set<String> sdiff(String... keys) {
  311. Jedis jedis = getJedis();
  312. Set<String> set = jedis.sdiff(keys);
  313. returnJedis(jedis);
  314. return set;
  315. }
  316. /**
  317. * 这个命令等于sdiff,但返回的不是结果集,而是将结果集存储在新的集合中,如果目标已存在,则覆盖。
  318. * @param String newkey 新结果集的key
  319. * @param String ... keys 比较的集合
  320. * @return 新集合中的记录数
  321. * **/
  322. public long sdiffstore(String newkey, String... keys) {
  323. Jedis jedis = getJedis();
  324. long s = jedis.sdiffstore(newkey, keys);
  325. returnJedis(jedis);
  326. return s;
  327. }
  328. /**
  329. * 返回给定集合交集的成员,如果其中一个集合为不存在或为空,则返回空Set
  330. * @param String ... keys
  331. * @return 交集成员的集合
  332. * **/
  333. public Set<String> sinter(String... keys) {
  334. Jedis jedis = getJedis();
  335. Set<String> set = jedis.sinter(keys);
  336. returnJedis(jedis);
  337. return set;
  338. }
  339. /**
  340. * 这个命令等于sinter,但返回的不是结果集,而是将结果集存储在新的集合中,如果目标已存在,则覆盖。
  341. * @param String newkey 新结果集的key
  342. * @param String ... keys 比较的集合
  343. * @return 新集合中的记录数
  344. * **/
  345. public long sinterstore(String newkey, String... keys) {
  346. Jedis jedis = getJedis();
  347. long s = jedis.sinterstore(newkey, keys);
  348. returnJedis(jedis);
  349. return s;
  350. }
  351. /**
  352. * 确定一个给定的值是否存在
  353. * @param String key
  354. * @param String member 要判断的值
  355. * @return 存在返回1,不存在返回0
  356. * **/
  357. public boolean sismember(String key, String member) {
  358. //ShardedJedis sjedis = getShardedJedis();
  359. Jedis sjedis = getJedis();
  360. boolean s = sjedis.sismember(key, member);
  361. returnJedis(sjedis);
  362. return s;
  363. }
  364. /**
  365. * 返回集合中的所有成员
  366. * @param String key
  367. * @return 成员集合
  368. * */
  369. public Set<String> smembers(String key) {
  370. //ShardedJedis sjedis = getShardedJedis();
  371. Jedis sjedis = getJedis();
  372. Set<String> set = sjedis.smembers(key);
  373. returnJedis(sjedis);
  374. return set;
  375. }
  376. public Set< byte[]> smembers( byte[] key) {
  377. //ShardedJedis sjedis = getShardedJedis();
  378. Jedis sjedis = getJedis();
  379. Set< byte[]> set = sjedis.smembers(key);
  380. returnJedis(sjedis);
  381. return set;
  382. }
  383. /**
  384. * 将成员从源集合移出放入目标集合 <br/>
  385. * 如果源集合不存在或不包哈指定成员,不进行任何操作,返回0<br/>
  386. * 否则该成员从源集合上删除,并添加到目标集合,如果目标集合中成员已存在,则只在源集合进行删除
  387. * @param String srckey 源集合
  388. * @param String dstkey 目标集合
  389. * @param String member 源集合中的成员
  390. * @return 状态码,1成功,0失败
  391. * */
  392. public long smove(String srckey, String dstkey, String member) {
  393. Jedis jedis = getJedis();
  394. long s = jedis.smove(srckey, dstkey, member);
  395. returnJedis(jedis);
  396. return s;
  397. }
  398. /**
  399. * 从集合中删除成员
  400. * @param String key
  401. * @return 被删除的成员
  402. * */
  403. public String spop(String key) {
  404. Jedis jedis = getJedis();
  405. String s = jedis.spop(key);
  406. returnJedis(jedis);
  407. return s;
  408. }
  409. /**
  410. * 从集合中删除指定成员
  411. * @param String key
  412. * @param String member 要删除的成员
  413. * @return 状态码,成功返回1,成员不存在返回0
  414. * */
  415. public long srem(String key, String member) {
  416. Jedis jedis = getJedis();
  417. long s = jedis.srem(key, member);
  418. returnJedis(jedis);
  419. return s;
  420. }
  421. /**
  422. * 合并多个集合并返回合并后的结果,合并后的结果集合并不保存<br/>
  423. * @param String ... keys
  424. * @return 合并后的结果集合
  425. * @see sunionstore
  426. * */
  427. public Set<String> sunion(String... keys) {
  428. Jedis jedis = getJedis();
  429. Set<String> set = jedis.sunion(keys);
  430. returnJedis(jedis);
  431. return set;
  432. }
  433. /**
  434. * 合并多个集合并将合并后的结果集保存在指定的新集合中,如果新集合已经存在则覆盖
  435. * @param String newkey 新集合的key
  436. * @param String ... keys 要合并的集合
  437. * **/
  438. public long sunionstore(String newkey, String... keys) {
  439. Jedis jedis = getJedis();
  440. long s = jedis.sunionstore(newkey, keys);
  441. returnJedis(jedis);
  442. return s;
  443. }
  444. }
  445. //*******************************************SortSet*******************************************//
  446. public class SortSet {
  447. /**
  448. * 向集合中增加一条记录,如果这个值已存在,这个值对应的权重将被置为新的权重
  449. * @param String key
  450. * @param double score 权重
  451. * @param String member 要加入的值,
  452. * @return 状态码 1成功,0已存在member的值
  453. * */
  454. public long zadd(String key, double score, String member) {
  455. Jedis jedis = getJedis();
  456. long s = jedis.zadd(key, score, member);
  457. returnJedis(jedis);
  458. return s;
  459. }
  460. public long zadd(String key, Map<Double, String> scoreMembers) {
  461. Jedis jedis = getJedis();
  462. long s = jedis.zadd(key, scoreMembers);
  463. returnJedis(jedis);
  464. return s;
  465. }
  466. /**
  467. * 获取集合中元素的数量
  468. * @param String key
  469. * @return 如果返回0则集合不存在
  470. * */
  471. public long zcard(String key) {
  472. //ShardedJedis sjedis = getShardedJedis();
  473. Jedis sjedis = getJedis();
  474. long len = sjedis.zcard(key);
  475. returnJedis(sjedis);
  476. return len;
  477. }
  478. /**
  479. * 获取指定权重区间内集合的数量
  480. * @param String key
  481. * @param double min 最小排序位置
  482. * @param double max 最大排序位置
  483. * */
  484. public long zcount(String key, double min, double max) {
  485. //ShardedJedis sjedis = getShardedJedis();
  486. Jedis sjedis = getJedis();
  487. long len = sjedis.zcount(key, min, max);
  488. returnJedis(sjedis);
  489. return len;
  490. }
  491. /**
  492. * 获得set的长度
  493. *
  494. * @param key
  495. * @return
  496. */
  497. public long zlength(String key) {
  498. long len = 0;
  499. Set<String> set = zrange(key, 0, - 1);
  500. len = set.size();
  501. return len;
  502. }
  503. /**
  504. * 权重增加给定值,如果给定的member已存在
  505. * @param String key
  506. * @param double score 要增的权重
  507. * @param String member 要插入的值
  508. * @return 增后的权重
  509. * */
  510. public double zincrby(String key, double score, String member) {
  511. Jedis jedis = getJedis();
  512. double s = jedis.zincrby(key, score, member);
  513. returnJedis(jedis);
  514. return s;
  515. }
  516. /**
  517. * 返回指定位置的集合元素,0为第一个元素,-1为最后一个元素
  518. * @param String key
  519. * @param int start 开始位置(包含)
  520. * @param int end 结束位置(包含)
  521. * @return Set<String>
  522. * */
  523. public Set<String> zrange(String key, int start, int end) {
  524. //ShardedJedis sjedis = getShardedJedis();
  525. Jedis sjedis = getJedis();
  526. Set<String> set = sjedis.zrange(key, start, end);
  527. returnJedis(sjedis);
  528. return set;
  529. }
  530. /**
  531. * 返回指定权重区间的元素集合
  532. * @param String key
  533. * @param double min 上限权重
  534. * @param double max 下限权重
  535. * @return Set<String>
  536. * */
  537. public Set<String> zrangeByScore(String key, double min, double max) {
  538. //ShardedJedis sjedis = getShardedJedis();
  539. Jedis sjedis = getJedis();
  540. Set<String> set = sjedis.zrangeByScore(key, min, max);
  541. returnJedis(sjedis);
  542. return set;
  543. }
  544. /**
  545. * 获取指定值在集合中的位置,集合排序从低到高
  546. * @see zrevrank
  547. * @param String key
  548. * @param String member
  549. * @return long 位置
  550. * */
  551. public long zrank(String key, String member) {
  552. //ShardedJedis sjedis = getShardedJedis();
  553. Jedis sjedis = getJedis();
  554. long index = sjedis.zrank(key, member);
  555. returnJedis(sjedis);
  556. return index;
  557. }
  558. /**
  559. * 获取指定值在集合中的位置,集合排序从高到低
  560. * @see zrank
  561. * @param String key
  562. * @param String member
  563. * @return long 位置
  564. * */
  565. public long zrevrank(String key, String member) {
  566. //ShardedJedis sjedis = getShardedJedis();
  567. Jedis sjedis = getJedis();
  568. long index = sjedis.zrevrank(key, member);
  569. returnJedis(sjedis);
  570. return index;
  571. }
  572. /**
  573. * 从集合中删除成员
  574. * @param String key
  575. * @param String member
  576. * @return 返回1成功
  577. * */
  578. public long zrem(String key, String member) {
  579. Jedis jedis = getJedis();
  580. long s = jedis.zrem(key, member);
  581. returnJedis(jedis);
  582. return s;
  583. }
  584. /**
  585. * 删除
  586. * @param key
  587. * @return
  588. */
  589. public long zrem(String key) {
  590. Jedis jedis = getJedis();
  591. long s = jedis.del(key);
  592. returnJedis(jedis);
  593. return s;
  594. }
  595. /**
  596. * 删除给定位置区间的元素
  597. * @param String key
  598. * @param int start 开始区间,从0开始(包含)
  599. * @param int end 结束区间,-1为最后一个元素(包含)
  600. * @return 删除的数量
  601. * */
  602. public long zremrangeByRank(String key, int start, int end) {
  603. Jedis jedis = getJedis();
  604. long s = jedis.zremrangeByRank(key, start, end);
  605. returnJedis(jedis);
  606. return s;
  607. }
  608. /**
  609. * 删除给定权重区间的元素
  610. * @param String key
  611. * @param double min 下限权重(包含)
  612. * @param double max 上限权重(包含)
  613. * @return 删除的数量
  614. * */
  615. public long zremrangeByScore(String key, double min, double max) {
  616. Jedis jedis = getJedis();
  617. long s = jedis.zremrangeByScore(key, min, max);
  618. returnJedis(jedis);
  619. return s;
  620. }
  621. /**
  622. * 获取给定区间的元素,原始按照权重由高到低排序
  623. * @param String key
  624. * @param int start
  625. * @param int end
  626. * @return Set<String>
  627. * */
  628. public Set<String> zrevrange(String key, int start, int end) {
  629. //ShardedJedis sjedis = getShardedJedis();
  630. Jedis sjedis = getJedis();
  631. Set<String> set = sjedis.zrevrange(key, start, end);
  632. returnJedis(sjedis);
  633. return set;
  634. }
  635. /**
  636. * 获取给定值在集合中的权重
  637. * @param String key
  638. * @param memeber
  639. * @return double 权重
  640. * */
  641. public double zscore(String key, String memebr) {
  642. //ShardedJedis sjedis = getShardedJedis();
  643. Jedis sjedis = getJedis();
  644. Double score = sjedis.zscore(key, memebr);
  645. returnJedis(sjedis);
  646. if (score != null)
  647. return score;
  648. return 0;
  649. }
  650. }
  651. //*******************************************Hash*******************************************//
  652. public class Hash {
  653. /**
  654. * 从hash中删除指定的存储
  655. * @param String key
  656. * @param String fieid 存储的名字
  657. * @return 状态码,1成功,0失败
  658. * */
  659. public long hdel(String key, String fieid) {
  660. Jedis jedis = getJedis();
  661. long s = jedis.hdel(key, fieid);
  662. returnJedis(jedis);
  663. return s;
  664. }
  665. public long hdel(String key) {
  666. Jedis jedis = getJedis();
  667. long s = jedis.del(key);
  668. returnJedis(jedis);
  669. return s;
  670. }
  671. /**
  672. * 测试hash中指定的存储是否存在
  673. * @param String key
  674. * @param String fieid 存储的名字
  675. * @return 1存在,0不存在
  676. * */
  677. public boolean hexists(String key, String fieid) {
  678. //ShardedJedis sjedis = getShardedJedis();
  679. Jedis sjedis = getJedis();
  680. boolean s = sjedis.hexists(key, fieid);
  681. returnJedis(sjedis);
  682. return s;
  683. }
  684. /**
  685. * 返回hash中指定存储位置的值
  686. *
  687. * @param String key
  688. * @param String fieid 存储的名字
  689. * @return 存储对应的值
  690. * */
  691. public String hget(String key, String fieid) {
  692. //ShardedJedis sjedis = getShardedJedis();
  693. Jedis sjedis = getJedis();
  694. String s = sjedis.hget(key, fieid);
  695. returnJedis(sjedis);
  696. return s;
  697. }
  698. public byte[] hget( byte[] key, byte[] fieid) {
  699. //ShardedJedis sjedis = getShardedJedis();
  700. Jedis sjedis = getJedis();
  701. byte[] s = sjedis.hget(key, fieid);
  702. returnJedis(sjedis);
  703. return s;
  704. }
  705. /**
  706. * 以Map的形式返回hash中的存储和值
  707. * @param String key
  708. * @return Map<Strinig,String>
  709. * */
  710. public Map<String, String> hgetAll(String key) {
  711. //ShardedJedis sjedis = getShardedJedis();
  712. Jedis sjedis = getJedis();
  713. Map<String, String> map = sjedis.hgetAll(key);
  714. returnJedis(sjedis);
  715. return map;
  716. }
  717. /**
  718. * 添加一个对应关系
  719. * @param String key
  720. * @param String fieid
  721. * @param String value
  722. * @return 状态码 1成功,0失败,fieid已存在将更新,也返回0
  723. * **/
  724. public long hset(String key, String fieid, String value) {
  725. Jedis jedis = getJedis();
  726. long s = jedis.hset(key, fieid, value);
  727. returnJedis(jedis);
  728. return s;
  729. }
  730. public long hset(String key, String fieid, byte[] value) {
  731. Jedis jedis = getJedis();
  732. long s = jedis.hset(key.getBytes(), fieid.getBytes(), value);
  733. returnJedis(jedis);
  734. return s;
  735. }
  736. /**
  737. * 添加对应关系,只有在fieid不存在时才执行
  738. * @param String key
  739. * @param String fieid
  740. * @param String value
  741. * @return 状态码 1成功,0失败fieid已存
  742. * **/
  743. public long hsetnx(String key, String fieid, String value) {
  744. Jedis jedis = getJedis();
  745. long s = jedis.hsetnx(key, fieid, value);
  746. returnJedis(jedis);
  747. return s;
  748. }
  749. /**
  750. * 获取hash中value的集合
  751. *
  752. * @param String
  753. * key
  754. * @return List<String>
  755. * */
  756. public List<String> hvals(String key) {
  757. //ShardedJedis sjedis = getShardedJedis();
  758. Jedis sjedis = getJedis();
  759. List<String> list = sjedis.hvals(key);
  760. returnJedis(sjedis);
  761. return list;
  762. }
  763. /**
  764. * 在指定的存储位置加上指定的数字,存储位置的值必须可转为数字类型
  765. * @param String key
  766. * @param String fieid 存储位置
  767. * @param String long value 要增加的值,可以是负数
  768. * @return 增加指定数字后,存储位置的值
  769. * */
  770. public long hincrby(String key, String fieid, long value) {
  771. Jedis jedis = getJedis();
  772. long s = jedis.hincrBy(key, fieid, value);
  773. returnJedis(jedis);
  774. return s;
  775. }
  776. /**
  777. * 返回指定hash中的所有存储名字,类似Map中的keySet方法
  778. * @param String key
  779. * @return Set<String> 存储名称的集合
  780. * */
  781. public Set<String> hkeys(String key) {
  782. //ShardedJedis sjedis = getShardedJedis();
  783. Jedis sjedis = getJedis();
  784. Set<String> set = sjedis.hkeys(key);
  785. returnJedis(sjedis);
  786. return set;
  787. }
  788. /**
  789. * 获取hash中存储的个数,类似Map中size方法
  790. * @param String key
  791. * @return long 存储的个数
  792. * */
  793. public long hlen(String key) {
  794. //ShardedJedis sjedis = getShardedJedis();
  795. Jedis sjedis = getJedis();
  796. long len = sjedis.hlen(key);
  797. returnJedis(sjedis);
  798. return len;
  799. }
  800. /**
  801. * 根据多个key,获取对应的value,返回List,如果指定的key不存在,List对应位置为null
  802. * @param String key
  803. * @param String ... fieids 存储位置
  804. * @return List<String>
  805. * */
  806. public List<String> hmget(String key, String... fieids) {
  807. //ShardedJedis sjedis = getShardedJedis();
  808. Jedis sjedis = getJedis();
  809. List<String> list = sjedis.hmget(key, fieids);
  810. returnJedis(sjedis);
  811. return list;
  812. }
  813. public List< byte[]> hmget( byte[] key, byte[]... fieids) {
  814. //ShardedJedis sjedis = getShardedJedis();
  815. Jedis sjedis = getJedis();
  816. List< byte[]> list = sjedis.hmget(key, fieids);
  817. returnJedis(sjedis);
  818. return list;
  819. }
  820. /**
  821. * 添加对应关系,如果对应关系已存在,则覆盖
  822. * @param Strin key
  823. * @param Map <String,String> 对应关系
  824. * @return 状态,成功返回OK
  825. * */
  826. public String hmset(String key, Map<String, String> map) {
  827. Jedis jedis = getJedis();
  828. String s = jedis.hmset(key, map);
  829. returnJedis(jedis);
  830. return s;
  831. }
  832. /**
  833. * 添加对应关系,如果对应关系已存在,则覆盖
  834. * @param Strin key
  835. * @param Map <String,String> 对应关系
  836. * @return 状态,成功返回OK
  837. * */
  838. public String hmset(byte[] key, Map<byte[], byte[]> map) {
  839. Jedis jedis = getJedis();
  840. String s = jedis.hmset(key, map);
  841. returnJedis(jedis);
  842. return s;
  843. }
  844. }
  845. //*******************************************Strings*******************************************//
  846. public class Strings {
  847. /**
  848. * 根据key获取记录
  849. * @param String key
  850. * @return
  851. * */
  852. public String get(String key) {
  853. //ShardedJedis sjedis = getShardedJedis();
  854. Jedis sjedis = getJedis();
  855. String value = sjedis.get(key);
  856. returnJedis(sjedis);
  857. return value;
  858. }
  859. /**
  860. * 根据key获取记录
  861. * @param byte[] key
  862. * @return
  863. * */
  864. public byte[] get( byte[] key) {
  865. //ShardedJedis sjedis = getShardedJedis();
  866. Jedis sjedis = getJedis();
  867. byte[] value = sjedis.get(key);
  868. returnJedis(sjedis);
  869. return value;
  870. }
  871. /**
  872. * 添加有过期时间的记录
  873. *
  874. * @param String key
  875. * @param int seconds 过期时间,以秒为单位
  876. * @param String value
  877. * @return String 操作状态
  878. * */
  879. public String setEx(String key, int seconds, String value) {
  880. Jedis jedis = getJedis();
  881. String str = jedis.setex(key, seconds, value);
  882. returnJedis(jedis);
  883. return str;
  884. }
  885. /**
  886. * 添加有过期时间的记录
  887. *
  888. * @param String key
  889. * @param int seconds 过期时间,以秒为单位
  890. * @param String value
  891. * @return String 操作状态
  892. * */
  893. public String setEx(byte[] key, int seconds, byte[] value) {
  894. Jedis jedis = getJedis();
  895. String str = jedis.setex(key, seconds, value);
  896. returnJedis(jedis);
  897. return str;
  898. }
  899. /**
  900. * 添加一条记录,仅当给定的key不存在时才插入
  901. * @param String key
  902. * @param String value
  903. * @return long 状态码,1插入成功且key不存在,0未插入,key存在
  904. * */
  905. public long setnx(String key, String value) {
  906. Jedis jedis = getJedis();
  907. long str = jedis.setnx(key, value);
  908. returnJedis(jedis);
  909. return str;
  910. }
  911. /**
  912. * 添加记录,如果记录已存在将覆盖原有的value
  913. * @param String key
  914. * @param String value
  915. * @return 状态码
  916. * */
  917. public String set(String key, String value) {
  918. return set(SafeEncoder.encode(key), SafeEncoder.encode(value));
  919. }
  920. /**
  921. * 添加记录,如果记录已存在将覆盖原有的value
  922. * @param String key
  923. * @param String value
  924. * @return 状态码
  925. * */
  926. public String set(String key, byte[] value) {
  927. return set(SafeEncoder.encode(key), value);
  928. }
  929. /**
  930. * 添加记录,如果记录已存在将覆盖原有的value
  931. * @param byte[] key
  932. * @param byte[] value
  933. * @return 状态码
  934. * */
  935. public String set(byte[] key, byte[] value) {
  936. Jedis jedis = getJedis();
  937. String status = jedis.set(key, value);
  938. returnJedis(jedis);
  939. return status;
  940. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值