Jedis 操作哈希(Hash) 您所在的位置:网站首页 jedis连接redis Jedis 操作哈希(Hash)

Jedis 操作哈希(Hash)

2023-03-10 15:50| 来源: 网络整理| 查看: 265

Redis 哈希数据类型(hash)是一个 string 类型的 field(字段) 和 value(值) 的映射表,下面将介绍怎样使用 jedis 操作 Redis 的 Hash。

设置值

向 Redis Hash 类型的键添加一个字段或者多个字段,方法定义如下:

Long hset(String key, Map hash)  将整个 map 的键值对全部添加到键存储的 hash 中

Long hset(String key, String field, String value)  将指定的字段和值设置到键存储的 hash 中

Long hsetnx(String key, String field, String value)  如果在 key 存储的 hash 中,不存在 field 字段,则将该键值对添加到 key 的 hash 中。否则,不添加。

示例:

// 添加一个键值对到 mapKey 键中 jedis.hset("mapKey", "id", "100"); // 批量将 Map 中的键值对保存到 mapKey 键中 Map map = new HashMap(); map.put("name", "人人编程网"); map.put("url", "www.hxstrive.com"); jedis.hset("mapKey", map); // 如果 name 不存在,则添加 name 属性 jedis.hsetnx("mapKey", "name", "new 人人编程网"); // 如果 isHttps 不存在,则添加 isHttps 属性 jedis.hsetnx("mapKey", "isHttps", "yes"); Map resultMap = jedis.hgetAll("mapKey"); System.out.println(JSONObject.toJSONString(resultMap)); // 结果:{"name":"人人编程网","isHttps":"yes","url":"www.hxstrive.com","id":"100"}获取值

从 Redis hash 中获取字段值,方法定义如下:

String hget(String key, String field)  返回 key 存储 hash 中 field 字段的值

Map hgetAll(String key)  返回 key 存储 hash 中所有的字段和值

List hmget(String key, String... fields)  返回 key 存储 hash 中 fields 数组中所有字段的值

示例:

// 准备点数据 Map map = new HashMap(); map.put("id", "100"); map.put("name", "人人编程网"); map.put("url", "www.hxstrive.com"); jedis.hset("mapKey", map); // 获取 name 字段的值 String name = jedis.hget("mapKey", "name"); System.out.println("name=" + name); // name=人人编程网 // 一次性获取 name 和 id 字段的值 List valueList = jedis.hmget("mapKey", "id", "name"); System.out.println(Arrays.toString(valueList.toArray())); // [100, 人人编程网] // 获取键对应的Map中所有的数据 Map allMap = jedis.hgetAll("mapKey"); System.out.println(JSONObject.toJSONString(allMap)); // 结果:{"name":"人人编程网","url":"www.hxstrive.com","id":"100"}删除值

从 Redis hash 中删除一个值,方法定义如下:

Long hdel(String key, String... fields)  从 key 存储的 hash 中删除 fields 指定的一个或多个字段

示例:

// 准备点数据 Map map = new HashMap(); map.put("id", "100"); map.put("name", "人人编程网"); map.put("url", "www.hxstrive.com"); jedis.hset("mapKey", map); // 删除 mapKey 键中的 id 和 name 字段 long size = jedis.hdel("mapKey", "id", "name"); System.out.println("size=" + size); // size=2字段是否存在

检查指定的字段是否在 hash 中存在,方法定义如下:

Boolean hexists(String key, String field)  检查在 key 存储的 hash 中是否存在 field 字段。如果存在,则返回 true;如果不存在,则返回 false;

示例:

// 准备点数据 Map map = new HashMap(); map.put("id", "100"); map.put("name", "人人编程网"); map.put("url", "www.hxstrive.com"); jedis.hset("mapKey", map); // 检查 mapKey 键的 Map 中是否存在 name 字段 boolean flag = jedis.hexists("mapKey", "name"); System.out.println("flag=" + flag); // flag=true获取长度

获取 redis hash 长度,方法定义如下:

Long hlen(String key) 返回 key 存储的 hash 中存在的条目数量,即键值对的数量

示例:

// 准备点数据 Map map = new HashMap(); map.put("id", "100"); map.put("name", "人人编程网"); map.put("url", "www.hxstrive.com"); jedis.hset("mapKey", map); long size = jedis.hlen("mapKey"); System.out.println("size=" + size); // size=3自增

对 redis hash 中某个字段进行自增操作,方法定义如下:

Long hincrBy(String key, String field, long value)  对 key 存储的 hash 中的 field 字段的值自增 value

Double hincrByFloat(String key, String field, double value) 对 key 存储的 hash 中的 field 字段的值自增 value

示例:

// 准备点数据 Map map = new HashMap(); map.put("id", "100"); jedis.hset("mapKey", map); // 对 id 字段加 1 jedis.hincrBy("mapKey", "id", 1); System.out.println(jedis.hget("mapKey", "id")); // 101 // 对 id 字段加 5.5 jedis.hincrByFloat("mapKey", "id", 5.5F); System.out.println(jedis.hget("mapKey", "id")); // 106.5所有的键

获取 redis hash 的所有键,方法定义如下:

Set hkeys(String key) 获取 key 存储的 hash 中所有字段

示例:

// 准备点数据 Map map = new HashMap(); map.put("id", "100"); map.put("name", "人人编程网"); map.put("url", "www.hxstrive.com"); jedis.hset("mapKey", map); // 获取 mapKey 键所有字段名 Set keys = jedis.hkeys("mapKey"); System.out.println(Arrays.toString(keys.toArray())); // 结果:[name, url, id]所有的值

获取 redis hash 的所有值,方法定义如下:

List hvals(String key) 获取 key 存储的 hash 中所有值

示例:

// 准备点数据 Map map = new HashMap(); map.put("id", "100"); map.put("name", "人人编程网"); map.put("url", "www.hxstrive.com"); jedis.hset("mapKey", map); // 获取 mapKey 键所有字段名 List vals = jedis.hvals("mapKey"); System.out.println(Arrays.toString(vals.toArray())); // 结果:[100, www.hxstrive.com, 人人编程网]扫描Hash

扫描 redis hash 中的条目,方法定义如下:

ScanResult hscan(String key, String cursor) 使用默认参数扫描 key 存储的 hash

ScanResult hscan(String key, String cursor, ScanParams params) 使用指定的参数 params 扫描 key 存储的 hash

示例:

// 准备点数据 Map map = new HashMap(); map.put("site_id", "100"); map.put("site_name", "人人编程网"); map.put("site_url", "www.hxstrive.com"); map.put("version", "1.2.0"); jedis.hset("mapKey", map); ScanParams scanParams = new ScanParams(); // 匹配所有 site_ 开头的字段 scanParams.match("site_*"); // 限制一次扫描2条,没有效果 scanParams.count(2); ScanResult scanResult = jedis.hscan("mapKey", "0", scanParams); for(Map.Entry entry : scanResult.getResult()) {    System.out.println(entry.getKey() + "=" + entry.getValue()); } // 结果: // site_id=100 // site_url=www.hxstrive.com // site_name=人人编程网 String newCursor = scanResult.getCursor(); System.out.println("newCursor=" + newCursor); // newCursor=0



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有