redis的hash类型操作方法

简介

Hash是一个键值对的集合。Hash 是一个 String 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

Hash存储结构优化:

如果field数量较少,存储结构优化为类数组结构

如果field数量较多,存储结构使用HashMap结构

原生操作

增加/修改【key的field的value】

增加/修改

1
hset key field value

如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。 如果字段已经存在于哈希表中,旧值将被重写

增加(多个)

1
hmset key field1 value1 field2 value2……

增加(锁,只有field不存在时生效)

1
hsetnx key field value

如果哈希表不存在,一个新的哈希表被创建并进行 hsetnx 操作。

如果字段已经存在于哈希表中,操作无效。

如果 key 不存在,一个新哈希表被创建并执行 hsetnx 命令

查询

查询一个(key的field的value)

1
hget key field

查询所有field

1
hkeys key

查询所有value

1
hvals key

删除【key的field】

删除一个或多个

1
hdel key field1 field2……

不存在的字段将被忽略

方法 判断指定key中是否存在field

1
hexists key field

如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0

为哈希表key中的field字段的值加上增量increment(数字)

1
hincrby key field increment

增量也可以为负数,相当于对指定字段进行减法操作 如果哈希表的 key 不存在,一个新的哈希表被创建并执行 hincrby 命令 如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 对一个储存字符串值的字段执行 hincrby 命令将造成一个错误

java操作redis的hash类型

【boundHashOps()】 增加 往指定key中存储 键值

1
redisTemplate.boundHashOps("demo").put("1",1);

批量存储到指定key中

1
2
3
4
Map map = new HashMap();
          map.put("3","zhangsan");
          map.put("4","lisi");
          redisTemplate.boundHashOps("demo").putAll(map);

根据指定key判断键是否存在,存在返回false不新增,不存在则新增键值对返回true

1
System.out.println(redisTemplate.boundHashOps("demo").putIfAbsent("7", 5));

修改

重新命名当前key的名称

1
redisTemplate.boundHashOps(key).rename("test");

查询

根据指定key中得键取出值

1
System.out.println(redisTemplate.boundHashOps("demo").get("1"));

根据指定key取出所有键

1
Set<object data-origwidth="" data-origheight="" style="width: 1264px;"> keys = redisTemplate.boundHashOps("demo").keys();</object>

获取指定key中所有键值对得值

1
2
List<object data-origwidth="" data-origheight="" style="width: 1264px;"> values = redisTemplate.boundHashOps("demo").values();
System.out.println(values);</object>

根据指定key取出全部键值对

1
Map<Object, Object> entries = redisTemplate.boundHashOps("demo").entries();

删除

根据指定key中得键删除

1
redisTemplate.boundHashOps("demo").delete("1");

方法

设置key得到期时间 TimeUnit 设置时间类型(时、分、秒…)

1
redisTemplate.boundHashOps("demo").expire(100000, TimeUnit.MILLISECONDS);

获取当前key过期时间

1
System.out.println(redisTemplate.boundHashOps("demo").getExpire());

获取指定key得元素长度

1
Long size = redisTemplate.boundHashOps("demo").size();

判断指定key中是否存在该键

1
System.out.println(redisTemplate.boundHashOps("demo").hasKey("1"));

获取当前key的存储方式

1
System.out.println(redisTemplate.boundHashOps("demo").getType());

到此这篇关于redis的hash类型的详解的文章就介绍到这了,更多相关redis的hash类型内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/database/redis/9037.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部