百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Redis 常用数据类型之 hash(哈希)

haoteby 2024-11-11 12:45 18 浏览



hash 哈希的特性

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

Redis 中每个 hash 可以存储 - 1 键值对(40多亿)。

hash 相关命令

hash 相关的命令都是以 “h” 开头的


操作

命令

例子

说明

hset

hset key name value

设置值

存多个键值对

hmset

hmset key name value name1 value1

一次性存入多个值

hget

hget key name

获取值

取多个值

hmget

hmget key name name1

获取多个值

取所有属性与值

hgetall

hgetall key


删除单个/多个key值

hdel

hdel key name1 name2

当删除一个空的 hash 时(key存在),会返回一个0

删除集合

del

del key

删除整个hash

增加指定的数值

hincrby

hincrby key name 指定数值

增加指定的数值,类似于 String 中的 incryby 操作

判断集合中是否存在指定的key

hexists

hexists key name

hexists 判断 hash 中的某个属性是否存在,存在返回 1,不存在返回0

获取属性的个数

hlen

hlen key

获取当前key 的 name 的个数

获取所有属性的名称

hkeys

hkeys key

获取当前 key 中 name 的值

获取所有属性的值

hvals

hvals key

获取当前 key 中所有属性的值



基础操作(hset、hget、hmset、hmget)


127.0.0.1:6379> hset myhash name Tom                # 设置 一个具体的 key-value
(integer) 1
127.0.0.1:6379> hget myhash name                    # 获取名称
"Tom"
# 同时设置多个值(可以设置 key 存在的元素,也可以设置不存在的元素)
127.0.0.1:6379> hmset myhash age 12 flag true       
OK
# 同时获取 myhash 下面的 age、name、flag 值
127.0.0.1:6379> hmget myhash age name flag          
1) "12"
2) "Tom"
3) "true"
127.0.0.1:6379> hgetall myhash                      # 获取 myhash 下面所有的 key-value
1) "name"
2) "Tom"
3) "age"
4) "12"
5) "flag"
6) "true"
127.0.0.1:6379> hmset myhashTest age 12             # 添加一个不存在的 hash key
OK
127.0.0.1:6379> keys m*                             # 查看以 m开头的 key元素
1) "myhashTest"
2) "myhash"
127.0.0.1:6379>



获取属性相关操作(hlen、hkeys、hvals)


127.0.0.1:6379> hlen myhash            # 获取hash 中的字段数量
(integer) 3
127.0.0.1:6379> hkeys myhash           # 获取hash 中所有的 key
1) "name"
2) "age"
3) "flag"
127.0.0.1:6379> hvals myhash           # 获取hash 中所有的value
1) "Tom"
2) "12"
3) "true"
127.0.0.1:6379>



判断存在与增加指定的值(hexists、hincrby)


127.0.0.1:6379> hexists myhash test        # 判断是否存在,不存在返回 0
(integer) 0
127.0.0.1:6379> hexists myhash name        # 存在就返回 1
(integer) 1
127.0.0.1:6379> hincrby myhash age 2       # 指定增加数字
(integer) 14
127.0.0.1:6379>



不存在时设置值(hsetnx)


127.0.0.1:6379> hsetnx myhash age 1        # 设置 myhash 值,此时 myhash 存在,设置不成功
(integer) 0
127.0.0.1:6379> hgetall myhash             # 查看是否设置成功
1) "name"
2) "Tom"
3) "age"
4) "14"
5) "flag"
6) "true"
127.0.0.1:6379> hsetnx myhash1 age 12      # 设置不存在的的值
(integer) 1
127.0.0.1:6379> keys my*
1) "myhashTest"
2) "myhash"
3) "myhash1"
127.0.0.1:6379>

相关推荐

JAVA零基础入门:JDK的概述及安装(jdk完整安装教程)

一.什么是jdkJDK(JavaDevelopmentToolKit)是Java开发工具包,JDK是整个JAVA的核心,包括了Java运行环境(JavaRuntimeEnvirnment),一...

开源、强大的工作流引擎:camunda入门介绍

原创不易,请多多支持!对Java技术感兴趣的童鞋请关注我,后续技术分享更精彩。简介CamundaisaJava-basedframeworksupportingBPMNforwork...

Centos8搭建Java环境(JDK1.8+Nginx+Tomcat9+Redis+Mysql)

一、开篇1.1目的每次换新的服务器,都要找资料配下环境,所以我写这篇文章,重新梳理了一下,方便了自己,希望也能给大家带来一些帮助。安装的软件有:JDK1.8+Nginx+Tomcat9+...

记录一次tomcat的升级过程(tomcat6升级tomcat8)

原因:ApacheTomcat资源管理错误漏洞(CVE-2021-42340)版本:ApacheTomcat/9.0.46,tomcat解决方法:升级tomcat9到最新版本9.0.581.官...

Tomcat10安装与配置图文教程(tomcat安装及配置)

Tomcat10安装与配置图文教程1、百度搜索“tomcat下载”,进入官网下载https://tomcat.apache.org/index.html...

VS2022配置x86/x64调用32位和64位汇编语言动态库环境

配置X86MASM汇编环境1.创建项目打开VS2022创建新项目,新建asm文件(注意要手动修改cpp文件后缀名为asm文件后缀名)。2.设置入口点选择菜单栏中的“调试”-“demo调试属性”-...

ARM版Win10用户狂喜 微软全新补丁让应用不再不兼容

Windows10onARM仅支持模拟32位的X86应用程序,这意味着大多数的桌面应用是无法在这一平台上运行的,这在很大程度上限制该平台的发展。为了解决这一问题,微软在内部开发频道推出可用于AR...

分享收藏的 oracle 11.2.0.4各平台的下载地址

概述oracle11.2.0.4是目前生产环境用的比较多的版本,同时也是很稳定的一个版本。目前官网上已经找不到下载链接了,有粉丝在头条里要求分享一下下载地址。一、各平台下载地址...

Android-x86现已基于5.1.1 Lollipop:支持UEFI和64位内核

采用Linux内核的Android-x86,旨在为PC带来最新的Android移动操作系统体验。而近日,该操作系统已经发布了Android-x865.1的首个候选发布(RC)版本。发行说明中提到:A...

Linux Kernel源码阅读: x86-64 系统调用实现细节(二)

特别说明:该文章前两天发布过,但一直在审核中。看头条网友说字数太多可能一直处于审核中状态,我把该文章拆分成几个章节发布,如影响阅读体验还请见谅。五、系统调用编号...

树莓派4B安装win10后实测,CPU秒杀AMD Athlon64 3200+

在上一篇文章介绍了如何给树莓派4B安装win10系统,这篇就简单对系统进行测试,上一篇文章链接https://www.toutiao.com/i7015518822056886821/因为树莓派是a...

一键离线部署x86、arm64 RabbitMQ,花了2天去验证整理,直接拿去

最近有一个项目,客户是内网网络,只能离线部署,采用的麒麟ARM64服务器系统,不能远程部署,需要提前准备离线部署包让客户IT拷备上去再现场部署,部署时间就只有1天。自家系统采用的vue+springb...

Linux软件包管理(linux系统软件包的安装方法,并简要说明其特点)

Linux系统如果需要安装软件怎么办?如何安装,大概有以下几种方式1.二级制软件包管理(RPM、YUM)...

Tachyum要做全球最强64位处理器:性能比X86强,面积比ARM小

全球半导体芯片研发、生产最强的国家非美国莫属,如果有某家美国公司宣布要开发性能超强的芯片,大家不会意外,但要是一家斯洛伐克初创公司宣布要研发超级芯片呢?Tachyum公司就是这样一家公司,成立于201...

Android L 64位模拟器终于来了:x86独享

GoogleI/O2014大会已经过去了很久,64位的AndroidL依然停留在纸面上,但现在至少可以让开发者们先行品尝品尝了:64位的AndroidL模拟器已经发布。这次公布的模拟器镜像是专...