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

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

mhr18 2024-10-31 13:24 20 浏览 0 评论



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培训机构,你选对了吗?(java培训机构官网)

如今IT行业发展迅速,不仅是大学生,甚至有些在职的员工都想学习java开发,需求量的扩大,薪资必定增长,这也是更多人选择java开发的主要原因。不过对于没有基础的学员来说,java技术不是一两天就能...

产品经理MacBook软件清单-20个实用软件

三年前开始使用MacBookPro,从此再也不想用Windows电脑了,作为生产工具,MacBook可以说是非常胜任。作为产品经理,值得拥有一台MacBook。MacBook是工作平台,要发挥更大作...

RAD Studio(Delphi) 本月隆重推出新的版本12.3

#在头条记录我的2025#自2024年9月,推出Delphi12.2版本后,本月隆重推出新的版本12.3,RADStudio12.3,包含了Delphi12.3和C++builder12.3最...

图解Java垃圾回收机制,写得非常好

什么是自动垃圾回收?自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用...

Centos7 初始化硬盘分区、挂载(针对2T以上)添加磁盘到卷

1、通过命令fdisk-l查看硬盘信息:#fdisk-l,发现硬盘为/dev/sdb大小4T。2、如果此硬盘以前有过分区,则先对磁盘格式化。命令:mkfs.文件系统格式-f/dev/sdb...

半虚拟化如何提高服务器性能(虚拟化 半虚拟化)

半虚拟化是一种重新编译客户机操作系统(OS)将其安装在虚拟机(VM)上的一种虚拟化类型,并在主机操作系统(OS)运行的管理程序上运行。与传统的完全虚拟化相比,半虚拟化可以减少开销,并提高系统性能。虚...

HashMap底层实现原理以及线程安全实现

HashMap底层实现原理数据结构:HashMap的底层实现原理主要依赖于数组+链表+红黑树的结构。1、数组:HashMap最底层是一个数组,称为table,它存放着键值对。2、链...

long和double类型操作的非原子性探究

前言“深入java虚拟机”中提到,int等不大于32位的基本类型的操作都是原子操作,但是某些jvm对long和double类型的操作并不是原子操作,这样就会造成错误数据的出现。其实这里的某些jvm是指...

数据库DELETE 语句,还保存原有的磁盘空间

MySQL和Oracle的DELETE语句与数据存储MySQL的DELETE操作当你在MySQL中执行DELETE语句时:逻辑删除:数据从表中标记为删除,不再可见于查询结果物理...

线程池—ThreadPoolExecutor详解(线程池实战)

一、ThreadPoolExecutor简介在juc-executors框架概述的章节中,我们已经简要介绍过ThreadPoolExecutor了,通过Executors工厂,用户可以创建自己需要的执...

navicat如何使用orcale(详细步骤)

前言:看过我昨天文章的同鞋都知道最近接手另一个国企项目,数据库用的是orcale。实话实说,也有快三年没用过orcale数据库了。这期间问题不断,因为orcale日渐消沉,网上资料也是真真假假,难辨虚...

你的程序是不是慢吞吞?GraalVM来帮你飞起来性能提升秘籍大公开

各位IT圈内外的朋友们,大家好!我是你们的老朋友,头条上的IT技术博主。不知道你们有没有这样的经历:打开一个软件,半天没反应;点开一个网站,图片刷不出来;或者玩个游戏,卡顿得想砸电脑?是不是特别上火?...

大数据正当时,理解这几个术语很重要

目前,大数据的流行程度远超于我们的想象,无论是在云计算、物联网还是在人工智能领域都离不开大数据的支撑。那么大数据领域里有哪些基本概念或技术术语呢?今天我们就来聊聊那些避不开的大数据技术术语,梳理并...

秒懂列式数据库和行式数据库(列式数据库的特点)

行式数据库(Row-Based)数据按行存储,常见的行式数据库有Mysql,DB2,Oracle,Sql-server等;列数据库(Column-Based)数据存储方式按列存储,常见的列数据库有Hb...

AMD发布ROCm 6.4更新:带来了多项底层改进,但仍不支持RDNA 4

AMD宣布,对ROCm软件栈进行了更新,推出了新的迭代版本ROCm6.4。这一新版本里,AMD带来了多项底层改进,包括更新改进了ROCm的用户空间库和AMDKFD内核驱动程序之间的兼容性,使其更容易...

取消回复欢迎 发表评论: