Redis系列-存储篇hash主要操作函数小结

一体式智能相机与分体视觉选型对比:SC-080项目落地实测 在机器视觉项目选型中,硬件方案的匹配度往往比算法调优更关键。分体视觉系统由工业相机、独立镜头、光源、控制器及线缆组成,性能灵活但集成复杂度高,现场调试与维护成本常常被低估。而一体式智能相机将图像传感器、处理单元、IO接口和光源控制集成于紧凑机身,以极简架构应对固定检测逻辑,大幅降低布线和联调难度。SC-080作为典型一体式视觉系统,凭借C接口兼容性、光电隔离IO和微秒级触发响应,在工件定位引导、尺寸测量及外观检测等场景中展现出高稳定性。实际项目验证显示,其端到端延迟约23毫秒,连续运行12小时无漏检,7天内 阅读详情

阳光透过玻璃,洒在身上,一杯暖茶在手,说不尽的安逸自得,让我有种想再写篇blog的冲动。上篇主要谈了string,这里谈谈hash吧!
hash是一些列key value(field value)的映射表。常常用其存储一些对象实例。相对于把一个对象的各个字段存储为string,存储为hash会占用更少的内存。为什么会更省内存呢?需要搞清楚两个配置(hash-max-zipmap-entries和hash-max-zipmap-value)的含义,配置的详细介绍,我打算放在最后的配置优化环节讲。

1)新增

a)hset

语法:hset key field value

解释:设置hash表key中的field的值。如果hash表不存在,则创建,并执行设置field的值,如果hash表存在,值field的值覆盖或新增

[root@xsf001 ~]# redis-cli 
redis 127.0.0.1:6379> hset user.1 name zhangsan    #设置key user.1 name域 的值
(integer) 1
redis 127.0.0.1:6379> hset user.1 age 45 #设置age域
(integer) 1
redis 127.0.0.1:6379> hset user.1 tech lisi
(integer) 1
b)hmset

语法:hash key field value[key value]

解释:批量设置hash表key的域

redis 127.0.0.1:6379> hmset user.2 name niuer age 34 #同时设置name 和age域
OK
c)hsetnx

语法:hsetnx key field value

解释:仅仅当field域不存在时,设置hash表field的值

redis 127.0.0.1:6379> hsetnx user.1 name lisi  #由于name域已经设置过,所以返回0
(integer) 0
redis 127.0.0.1:6379> hsetnx user.1 fri 5  
(integer) 1   #fri域没有设置过,所以hset并返回1
2)查询

a)hget

语法:hget key field

解释:获取哈希表key的field值

redis 127.0.0.1:6379> hget user.1 name  #存在的hash表及域
"zhangsan"
redis 127.0.0.1:6379> hget user.3 name  #不存在的hash表
(nil)
redis 127.0.0.1:6379> hget user.1 bb  #不存在的域
(nil)
b)hmget

语法:hmget key field[field]

解释:批量获取hash表的filed

redis 127.0.0.1:6379> hmget user.1 name age fri tech
1) "zhangsan"
2) "45"
3) "5"
4) "lisi"
redis 127.0.0.1:6379> hmget user.1 name age fri tech nofield #存在hash表中包含不存在的域nofield
1) "zhangsan"
2) "45"
3) "5"
4) "lisi"
5) (nil)
redis 127.0.0.1:6379> hmget user.3 name age fri #不存在的hash表
1) (nil)
2) (nil)
3) (nil)
c)hgetall

语法:hgetall key

解释:获取hash表的所有域值

redis 127.0.0.1:6379> hgetall user.2  #存在的hash表
1) "name"   #域
2) "niuer"  #域name的值
3) "age"    #域
4) "34"     #域age的值
redis 127.0.0.1:6379> hgetall user.3  #不存在的hansh表
(empty list or set)
   d)hexists

语法:hexists key field

解释:判断hash表中是否存在某个域

redis 127.0.0.1:6379> hexists user.1 name  #存在
(integer) 1
redis 127.0.0.1:6379> hexists user.1 nofield  #不存在
(integer) 0
redis 127.0.0.1:6379> hexists use1 nofield #hash表不存在
(integer) 0
e )hkeys

语法:hkeys key

解释:获取hash表的所有域

redis 127.0.0.1:6379> hkeys user.1  #存在的hash表
1) "name"
2) "age"
3) "tech"
4) "fri"
redis 127.0.0.1:6379> hkeys user.4 #不存在的hash
(empty list or set)
f)hvals

语法:hvals key

解释:获取hash表的所有域值

redis 127.0.0.1:6379> hvals user.1  #存在hash
1) "zhangsan"
2) "45"
3) "lisi"
4) "5" 
redis 127.0.0.1:6379> hvals user.4 #不存在
(empty list or set)
3)修改

语法:hincrby key field increment

解释:hash表field域的数值增加步长increment,如果increment是负值,则是递减。如果域不存在,初始值视为0

redis 127.0.0.1:6379> hincrby user.1 age 2  #增加2
(integer) 47
redis 127.0.0.1:6379> hincrby user.1 age -3  #减少3
(integer) 44
redis 127.0.0.1:6379> hincrby user.1 age2 -3 #域不能存在,初始值是0
(integer) -3
4)删除

语法:hdel key field[field]

解释:删除hash的域,如果指定多个field,则删除多个

redis 127.0.0.1:6379> hkeys user.1
1) "name"
2) "age"
3) "tech"
4) "fri"
5) "age2"
redis 127.0.0.1:6379> hdel user.1 age2  #删除一个域
(integer) 1
redis 127.0.0.1:6379> hkeys user.1
1) "name"
2) "age"
3) "tech"
4) "fri"
redis 127.0.0.1:6379> hdel user.1 fri tech #删除2个域
(integer) 2
redis 127.0.0.1:6379> hkeys user.1
1) "name"
2) "age"
redis 127.0.0.1:6379> hdel user.1 bb #删除一个不存在的域 
(integer) 0 #返回0
5)其他

语法:hlen key

解释:获取hash的域数量

redis 127.0.0.1:6379> hkeys user.1
1) "name"
2) "age"
redis 127.0.0.1:6379> hlen user.1 #存在2个域
(integer) 2
redis 127.0.0.1:6379> hlen user.4  #不存在的hash
(integer) 0

关于hash的更多详细用法,请参阅:http://redis.io/commands#hash


如果感觉对您有所帮助,请粉新浪微博:http://weibo.com/lovecoder


Redis一致性哈希算法和哈希槽区别 一致性哈希算法和哈希槽(Hash Slot)都是在分布式系统中用于数据分片和节点映射的技术,主要应用于像 Redis 集群这样需要将数据分散存储在多个节点的场景。一致性哈希是在哈希取余算法基础之上优化的,分布式缓存数据变动和映射问题,某个机器宕机了,分母数量改变了,自然取余数不对了。用于解决分布式缓存系统中的数据选择节点存储问题和数据选择节点读取问题以及在增删节点后减少数据缓存的消失范畴,防止雪崩的发生。 阅读详情

相关推荐

Redis第九讲 Redis之Hash数据结构Dict字典哈希算法与hash存储过程

Redis第九讲 Redis之Hash数据结构Dict字典哈希算法Redis第九讲 Redis之Hash数据结构Dict字典哈希算法Redis第九讲 Redis之Hash数据结构Dict字典哈希算法

程序员路同学 1412

【redis】JAVA中的opsForHash如何设置过期时间

在网络上搜这个问题的时候,弹出来的要么都是说redis设置TTL的和实现过期的原理(谁关心这个),要么就是说用opsForValue来代替(实测,能代替个鬼)。最后是用redisDesktopManage手动设置TTL的时候,得到启发,工具既然能设置,那么代码一定有办法,仔细看了方法,这就找到了。原文链接:https://blog.youkuaiyun.com/lhjllff12345/article/details/126786999。//设置过期时间600秒。

C18298182575的博客 3108

redis中几种哈希函数的研究

redis中几种哈希函数的研究         这段时间一直在研究redis的源码,在研究其字典结构体的实现部分时,遇到了几个陌生的哈希函数。研究了一下才发现这些函数在如今的开源项目中早已得到了广泛的应用,如标准C++库、nginx、Hadoop等等。         于是乎,我对redis中的这几个函数做了点研究,自己琢磨出点东西来,在这里与大家分享一下。我写这篇文章的目的主要是想阐述一下我

jasperlei的进击之旅 1万+

SpringBoot写入Redis数据库Hash类型数据并且设置过期时间

Java对于Redis的封装不是能满足所有的业务需求的,但是我们可以通过lua脚本来直接向Redis发送命令。 下面这两句话,可以实现向Redis插入Hash数据,并且设置整个Hash的过期时间。 putIfAbsent是set NX的意思,指的是如果没有才插入。redisTemplate是自动装配的 StringRedisTemplate对象 boolean a = redisTemplat...

qq_19439605的博客 9033

SQL Server安装报错PowerShell 2.0未安装?环境检查与启用实操指南

在Windows Server上部署数据库环境时,系统兼容性检查是决定安装成败的关键前置环节。SQL Server作为企业级数据库,其安装向导从2012版本起深度依赖PowerShell运行环境,尤其是对PowerShell 2.0引擎的硬性校验。许多运维人员常因系统默认版本较高而误判环境达标,实则2.0引擎需作为独立Windows功能单独启用。本文从PowerShell引擎的架构原理出发,解析SQL Server环境检查的设计逻辑,并给出基于DISM命令的功能启用、状态验证及常见错误排查方法,帮助开发与运

weixin_34347651的博客 316

【C++ 使用libxlsxwriter库向excel表格中插入图片 CMake + VS2019】

使用libxlsxwriter向excel表格插入图片

恒星游历者的博客 753

【Spring boot】RedisTemplate中String、Hash、List设置过期时间

时间类型:TimeUnitTimeUnit . SECONDS : 秒 TimeUnit . MINUTES :分 TimeUnit . HOURS :时 TimeUnit . DAYS :日 TimeUnit . MILLISECONDS :毫秒 TimeUnit . MILLISECONDS :微秒 TimeUnit . NANOSECONDS :纳秒。

DreamSun的博客 2958

安信可TB蓝牙模组系列 实战Ble Mesh智能照明系统搭建

本文详细介绍了如何使用安信可TB蓝牙模组系列搭建Ble Mesh智能照明系统。从硬件准备、固件烧录到手机APP组网全流程,提供了实战步骤和优化建议,特别适合智能家居开发者入门。Ble Mesh的自组网能力解决了蓝牙传输距离限制,实现全屋灯光智能控制。

weixin_30856725的博客 352

Redis 批量操作获取Hash Key, Value

1. 获取批量key //模糊匹配redis key Set<String> keys = stringRedisTemplate.keys("*" + RedisKeyUtils.getAllCacheCircleUserKey(userId.toString()) + "*"); 2. 根据key批量获取hash value /** * 批量获取hashKey value * * @param keys * @return

you_are_my_life的博客 1万+

UE5与Cesium for Unreal结合:打造高效离线地图解决方案

本文详细介绍了如何利用UE5与Cesium for Unreal结合打造高效离线地图解决方案,特别适用于数字孪生、军事仿真等网络不稳定场景。通过优化配置、数据处理和性能调优,实现TB级地形数据的流畅渲染,并结合实战案例展示了在油田巡检等复杂环境中的应用效果。

weixin_29007135的博客 493

AD9371 官方例程构建及单音信号收发

项目构建基本流程和AD9361差不多,由于官方使用的ZCU102,记录下移植遇到的一些问题最终接收到正确的正弦波Errors: 0Errors: 0Errors: 0Errors: 0AD9361。

weixin_44630490的博客 2971

Redis哈希(Hash)类型详解:高效存储与操作对象数据

文章详细介绍了哈希的基本操作(HMSET/HGETALL等)和高级功能(HINCRBY/HLEN等),列举了用户信息存储、商品信息等典型应用场景,并汇总了全部哈希操作命令。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 7858

(8)机器人动力学

机器人是一个具有多输入多输出的复杂动力学系统,存在严重的非线性,需要非常系统的方法对机器人进行动力学研究。常用的机器人动力学建模方法有:Lagrange(拉格朗日)动力学方法、Newton-Euler(牛顿-欧拉)动力学方法、Gauss(高斯)动力学方法、Kane(凯恩)动力学方法等。机器人动力学研究的是机器人的运动和作用力之间的关系。机器人的动力学问题包括动力学正问题和动力学逆问题。动力学正问题是对于给定的关节驱动力......

rouyu308的博客 9498

【Redis篇】Hash的认识以及相关命令操作

【Redis篇】Hash的认识以及相关命令操作

chaodddddd的博客 7511

VMware17安装教程(附安装包)VMware17小白详细一键安装教程

VMware 17.5 是一款强大的虚拟机软件。本安装教程将为您详细介绍VMware17安装教程其下载、安装步骤及验证方法,助您轻松完成安装,开启虚拟化体验。

2501_91538706的博客 2万+

基于Mask-RCNN网络的书架图书书脊分割和检测(含代码)

图书馆的书架上的图书书脊分割/检测对于图书书名等信息的识别具有重要意义,因此,该博客基于Mask-RCNN网络实现了图书书脊的分割和检测,有利于进一步利用ocr文字识别技术实现图书书名等信息的入库。如下图所示,为书架原始数据和分割/检测后的结果。(本文已训练模型,无需训练)

qq_44619530的博客 2025

redis—Hash哈希

redis数据结构hash介绍。

终为nullptr 2878

DPABISurf使用教材

严老师的官方教程:http://rfmri.org/Course DPABISurf版本:dpabi50docker.tar.gz MATLAB版本:2018b 一、数据准备 (1)如果是数据的DICOM格式,整理成以下格式(注意文件夹的命名方式): 如果觉得不是很清楚,可以在官网下载Demo数据(http://rfmri.org/DemoData),参照里面的文件格式进行整理即可。 (2)如果数据是nii格式,整理成以下格式: 这里没有使用官网的demo数据进行学习,而是..

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 8514
上一篇: Redis系列-存储篇string主要操作函数小结
下一篇: Redis系列-存储篇list主要操作函数小结
love__coder
博客等级 码龄18年 180粉丝 248原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值