当前位置: 首页 > news >正文

redis 中 Hash哈希介绍 及常用命令 (附有示例)

目录

一、Redis中Hash介绍

二、常用命令

三、示例

hset

hget

hmset   ..

 hexists  

hkeys  

hvals  

hincrbu

hsetnx

 四、redis中Hash底层数据结构


一、Redis中Hash介绍

Redis Hash是一个键值对集合

Redis hash 是一个String类型的 field 和 value 的映射表,hash特别适合用于存储对象

类似于Java里面的Map<String,Object>

用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储

主要有以下两种存储方式

方法一:每次修改的话需要,先取出来,然后解析,修改,再放序列化放回去,非常的麻烦,所以不推荐

方法二:如果一个对象的属性过多的话,数据就会变得非常复杂,也不推荐

于是就引出了下面的方法

二、常用命令

命令描述
hset <set> <field> <value>给<key>集合中的 <field>键赋值<value>
hget <key1> <field>从key1中取出指定的field对应的value
hmset <key1> <filed1> <value1> <filed3> <value2> ..批量插入key1的filed-value对
hexists <key1> <field> 查看哈希表key中,给定的field是否存在
hkeys <key>列出该key的所有field
hvals <key> 列出该hash集合的所有value
hincrbu <key> <field> <incerment>为哈希表key中的域field的值加上<incerment>
hsetnx <key><field> <value>给哈希表key添加field-value对,当且仅当域field不存在

三、示例

hset <key> <field> <value>

        给<key>集合中的 <field>键赋值<value>

        可以批量插入field-value对

hget <key1> <field>

        从key1中取出指定的field对应的value

注意,这里的<user:100>整体是一个key,":"不是一定要存在的

hmset <key1> <filed1> <value1> <filed3> <value2> ..

        批量插入key1的filed-value对

        但是hset也是可以批量插入的,当时作者在学习redis的时候也是十分疑惑

        后来查阅过官方文档后发现:根据Redis 4.0.0,HMSET被视为已弃用。请在新代码中使用HSET。

        在redis4.0之后,hset也是可以批量插入的,所以hmset就被弃用了

        所以推荐大家使用hset

 hexists <key1> <field> 

        查看哈希表key中,给定的field是否存在,存在则返回1,不存在返回0

                这里id域存在则返回1,xxx不存在返回0

hkeys <key> 

        列出该key的所有field

hvals <key> 

        列出该hash集合的所有value

 

hincrbu <key> <field> <incerment>

        为哈希表key中的域field的值加上<incerment>

hsetnx <key><field> <value>

        给哈希表key添加field-value对,当且仅当域field不存在

        id存在,所以添加失败,返回0,添加班级id成功,返回1

 四、redis中Hash底层数据结构

Hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表)

当field-value长度较短且个数较少时使用ziplist,否则使用hashtable

好了,这次的文章就到这里,喜欢的同学可以点赞收藏,遇到问题,可以评论,或者留言,我一定会第一时间给到回馈,感谢观看!!

注:本文为本人学习时心得分享,有讲错或者需要改正的地方,请指正,我会虚心接受

http://www.lryc.cn/news/570933.html

相关文章:

  • 目标检测总结:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD
  • STC 89C52 单片机引脚对应的功能以及实例讲解
  • 第六章、6.2 ESP32低功耗模式详解:深度睡眠与轻度睡眠实战指南
  • [python爬虫之路day5]:实战之电影天堂2019精选电影爬取
  • String.indexOf 用法
  • to avoid naming wrong index webpage for one website
  • Flash的126个为什么
  • Python | Python中最常用的100个函数(含内置函数、标准库函数及第三方库)
  • 《东周列国志》第十七回 宋国纳赂诛长万 楚王杯酒虏息妫
  • java permainan jombi_Ejaan ni Betul ke Salah?
  • [iOS] performSelectorOnMainThread支持多个参数
  • org.springframework.transaction.interceptor 类 TransactionProxyFactoryBean
  • VS2013+MFC 简易音乐播放器
  • 电商导购系统的基本架构与设计
  • 【习题解析】田忌赛马
  • linux设备树dts文件详解
  • matlab axis函数_MATLAB二维图形
  • HTML网页一键变黑白色调
  • Source Insight的入门使用
  • 网页鼠标点击特效案例收集
  • 如何使用十进制range()步长值?
  • python升级pip怎么出错了_Python,开启吐槽模式,新手必看!
  • linux命令chm app,Linux常用命令全集
  • 拼音缩写是啥意思_NMSL?AWSL?这些拼音缩写到底是啥意思?
  • Package name is not valid . ‘import‘ is not a valid Java identifier
  • mysql修改密码笔记
  • 如何用计算机cmd算数,计算命令:怎么在CMD的计算器命令是什么?
  • 小四哥的故事——访中联绿盟陈庆
  • 山寨qq java_MTK手机QQjava版本山寨qq2009通用版
  • 服务器重装