Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
一样的套路,先介绍部分命令,再通过代码来实现。
1、HMSET key field1 value1 [field2 value2 ]:同时将多个 field-value (域-值)对设置到哈希表 key 中。
2、HGETALL key:获取在哈希表中指定 key 的所有字段和值。
3、HMGET key field1 [field2]:获取所有给定字段的值。
4、HKEYS key:获取所有哈希表中的字段。
5、HVALS key:获取哈希表中所有值。
6、HLEN key:获取哈希表中字段的数量。
7、HEXISTS key field:查看哈希表 key 中,指定的字段是否存在。
8、HGET key field:获取存储在哈希表中指定字段的值。
9、HINCRBY key field increment:为哈希表 key 中的指定字段的整数值加上增量 increment 。
10、HSET key field value:将哈希表 key 中的字段 field 的值设为 value 。
11、HSCAN key cursor [MATCH pattern] [COUNT count]:迭代哈希表中的键值对。
12、HDEL key field2 [field2]:删除一个或多个哈希表字段。
以下是代码:
public class RedisTest{
private static Jedis instanceJedis(){
return JedisUtil.getInstance();
}
public static void main(String[] args) {
Jedis jedis = instanceJedis();
Map<String, String> hash = new HashMap<String, String>();
hash.put("name", "lgx");
hash.put("complany", "GRG");
hash.put("age", "20");
jedis.hmset("hashKey", hash);
System.out.println("获取在哈希表中指定 key 的所有字段和值:"+jedis.hgetAll("hashKey"));
System.out.println("获取所有给定字段的值:"+jedis.hmget("hashKey", "name", "age"));
System.out.println("获取所有哈希表中的字段:"+jedis.hkeys("hashKey"));
System.out.println("获取哈希表中所有值:"+jedis.hvals("hashKey"));
System.out.println("获取哈希表中字段的数量:"+jedis.hlen("hashKey"));
System.out.println("查看哈希表 key 中,指定的字段是否存在:"+jedis.hexists("hashKey", "name"));
System.out.println("获取存储在哈希表中指定字段的值:"+jedis.hget("hashKey", "name"));
jedis.hincrBy("hashKey", "age", 1);
System.out.println("获取存储在哈希表中指定[age]的值:"+jedis.hget("hashKey", "age"));
jedis.hset("hashKey", "name", "lgxing");
System.out.println("获取存储在哈希表中指定[name]的值:"+jedis.hget("hashKey", "name"));
System.out.println("hscan的用法");
ScanParams scanParams = new ScanParams();
// 完全匹配key值,不支持模糊匹配
scanParams.match("*");//可指定Hash中的某个字段
ScanResult<Map.Entry<String, String>> hscanResult = jedis.hscan("hashKey", "0", scanParams);
int cursor = hscanResult.getCursor(); // 返回0 说明遍历完成
System.out.println("游标" + cursor);
List<Map.Entry<String, String>> scanResult = hscanResult.getResult();
for (int m = 0; m < scanResult.size(); m++) {
Map.Entry<String, String> mapentry = scanResult.get(m);
System.out.println("key: " + mapentry.getKey() + " value: " + mapentry.getValue());
}
//删除一个或多个哈希表字段。del命令可以删除任何数据类型的key
jedis.hdel("hashKey", "complany");
jedis.del("hashKey");
System.out.println("删除hashKey之后再获取: "+jedis.hgetAll("hashKey"));
}
}
输出入下图: