Redis简单入门三——对Hash操作

来源:互联网 发布:南安普顿的人工智能 编辑:程序博客网 时间:2024/05/22 05:09

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"));
}

}

输出入下图:



0 0