版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36898043/article/details/82181987
一、由来
之前的redis pool的文章,讲解了如何封装一个redis pool以及操作redis中的字符串,博客地址如下:
https://blog.csdn.net/qq_36898043/article/details/82155202
还有一篇文章封装了一些 操作redis中的list 。。。。
https://blog.csdn.net/qq_36898043/article/details/82181654
还有一篇文章封装了一些 操作redis中的set 。。。。
https://blog.csdn.net/qq_36898043/article/details/82181793
关于 hash相关操作命令可以参考runoob,连接地址如下:
http://www.runoob.com/redis/redis-commands.html
本文主要是封装一些 操作 redis中 hash的相关方法。。。。。。
二、代码
package me.ele.redis;
import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Map;
/**
* 操作redis中的hash
*
* @author LZJ
* @create 2018-08-29 13:20
**/
public class HashRedisOperator {
/**
* 添加一条记录 如果map_key存在 则更新value
* hset 如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
* 如果字段已经存在于哈希表中,旧值将被覆盖
*
* @param pool
* @param key
* @param field
* @param value
* @return
*/
public static long set(MyRedisPool pool, String key, String field, String value) {
Jedis jedis = pool.borrowJedis();
long returnStatus = jedis.hset(key, field, value);
pool.returnJedis(jedis);
return returnStatus;
}
/**
* 批量添加记录
* hmset 同时将多个 field-value (域-值)对设置到哈希表 key 中。
* 此命令会覆盖哈希表中已存在的域。
* 如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。
*
* @param pool
* @param key
* @param map
* @return
*/
public static String setAll(MyRedisPool pool, String key, Map<String, String> map) {
Jedis jedis = pool.borrowJedis();
String result = jedis.hmset(key, map);
pool.returnJedis(jedis);
return result;
}
/**
* 删除hash中 field对应的值
* hdel 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略
*
* @param pool
* @param key
* @param field
* @return
*/
public static long delete(MyRedisPool pool, String key, String... field) {
Jedis jedis = pool.borrowJedis();
long returnStatus = jedis.hdel(key, field);
pool.returnJedis(jedis);
return returnStatus;
}
/**
* 获取hash中 指定的field的值
* hmget 返回哈希表 key 中,一个或多个给定域的值。
* 如果给定的域不存在于哈希表,那么返回一个 nil 值。
* 不存在的 key 被当作一个空哈希表来处理,所以对一个不存在的 key 进行 HMGET 操作将返回一个只带有 nil 值的表。
*
* @param pool
* @param key
* @param field
* @return
*/
public static List<String> get(MyRedisPool redisPool, String key, String... field) {
Jedis jedis = redisPool.borrowJedis();
List<String> result = jedis.hmget(key, field);
redisPool.returnJedis(jedis);
return result;
}
/**
* 获取hash中 所有的field value
*
* @param redisPool
* @param key
* @return 在返回值里,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度是哈希表大小的两倍。
*/
public static Map<String, String> getAll(MyRedisPool redisPool, String key) {
Jedis jedis = redisPool.borrowJedis();
Map<String, String> result = jedis.hgetAll(key);
redisPool.returnJedis(jedis);
return result;
}
/**
* 判断hash中 指定的field是否存在
*
* @param redisPool
* @param key
* @param field
* @return 如果哈希不包含字段或key不存在 返回0,如果哈希包含字段 返回1
*/
public static boolean ifExist(MyRedisPool redisPool, String key, String field) {
Jedis jedis = redisPool.borrowJedis();
boolean result = jedis.hexists(key, field);
redisPool.returnJedis(jedis);
return result;
}
/**
* 获取hash 的size
* hlen 获取哈希表中字段的数量
*
* @param redisPool
* @param key
* @return
*/
public static long size(MyRedisPool redisPool, String key) {
Jedis jedis = redisPool.borrowJedis();
long size = jedis.hlen(key);
redisPool.returnJedis(jedis);
return size;
}
}