Redis

关注公众号 jb51net

关闭
首页 > 数据库 > Redis > redis hash类型

redis的hash类型操作方法

作者:船长@

Hash 是一个 String 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象,这篇文章主要介绍了redis的hash类型的详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

简介

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

Hash存储结构优化:

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

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

原生操作

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

增加/修改

hset key field value

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

增加(多个)

hmset key field1 value1 field2 value2……

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

 hsetnx key field value

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

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

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

查询

查询一个(key的field的value)

hget key field

查询所有field

hkeys key

查询所有value

hvals key

删除【key的field】

删除一个或多个

hdel key field1 field2……

不存在的字段将被忽略

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

hexists key field

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

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

hincrby key field increment

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

java操作redis的hash类型

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

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

批量存储到指定key中

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

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

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

修改

重新命名当前key的名称

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

查询

根据指定key中得键取出值

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

根据指定key取出所有键

Set<Object> keys = redisTemplate.boundHashOps("demo").keys();

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

List<Object> values = redisTemplate.boundHashOps("demo").values();
System.out.println(values);

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

 Map&lt;Object, Object&gt; entries &#61; redisTemplate.boundHashOps(&#34;demo&#34;).entries();

删除

根据指定key中得键删除

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

方法

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

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

获取当前key过期时间

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

获取指定key得元素长度

Long size &#61; redisTemplate.boundHashOps(&#34;demo&#34;).size();

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

System.out.println(redisTemplate.boundHashOps(&#34;demo&#34;).hasKey(&#34;1&#34;));

获取当前key的存储方式

System.out.println(redisTemplate.boundHashOps(&#34;demo&#34;).getType());

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

您可能感兴趣的文章:
阅读全文