iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >NoSQL----Redis 2.4--Hash
  • 785
分享到

NoSQL----Redis 2.4--Hash

2024-04-02 19:04:59 785人浏览 安东尼
摘要

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。将一个对象存储在Hash类型中会占用更少的内存,并且更方便的存取整个对象。1、hset方法:HSE

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

将一个对象存储在Hash类型中会占用更少的内存,并且更方便的存取整个对象。

1、hset方法:

HSET key field value

将哈希表key中的字段(域)field的值设为value。

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

如果域field已经存在于哈希表中,旧值将被覆盖。

redis> HSET WEBsite Google "www.g.cn"  #对hash表websit的字段google设置为www.g.cn
(integer) 1

redis> HSET website google "www.google.com" # 覆盖一个旧域
(integer) 0

2、hsetnx方法:

HSETNX key field value

将哈希表key中的域field的值设置为value,当且仅当域field不存在。

若域field已经存在,该操作无效。

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

redis> HSETNX NoSQL key-value-store redis
(integer) 1

redis> HSETNX nosql key-value-store redis  # 操作无效,域key-value-store已存在
(integer) 0

3、hmset方法:

HMSET key field value [field value ...]

同时将多个field - value(域-值)对设置到哈希表key中。

此命令会覆盖哈希表中已存在的域。

如果key不存在,一个空哈希表被创建并执行HMSET操作。


# 情况1: 哈希表

redis> HMSET website google www.google.com yahoo www.yahoo.com
OK

redis> HGET website google
"www.google.com"

redis> HGET website yahoo
"www.yahoo.com"


# 情况2:类型错误时

redis> SET G 10  # 出错情况
OK

redis> HMSET G name huangz age 20
(error) ERR Operation against a key holding the wrong kind of value

4、hget方法:

HGET key field

返回哈希表key中给定域field的值。


redis> HSET huangz blog huangz.51cto.com
(integer) 1

redis> HGET huangz blog
"huangz.51cto.com"

5、hmget方法:

HMGET key field [field ...]

返回哈希表key中,一个或多个给定域的值。

如果给定的域不存在于哈希表,那么返回一个nil值。

因为不存在的key被当作一个空哈希表来处理,所以对一个不存在的key进行HMGET操作将返回一个只带有nil值的表。


redis> HMSET pet dog "tudou" cat "wandou"  # 一次保存多个值
OK

redis> HMGET pet dog cat fake_pet  # 返回值的顺序和传入参数的顺序一样。
1) "tudou"
2) "wandou"
3) (nil)  # 不存在的域返回nil值

6、hgetall方法:

HGETALL key

返回哈希表key中,所有的域和值。

在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。

redis> HSET hash_name jack "Jack Sparrow"
(integer) 1

redis> HSET hash_name gump "Forrest Gump"
(integer) 1

redis> HGETALL hash_name
1) "jack"          # 域
2) "Jack Sparrow"  # 值
3) "gump"          # 域
4) "Forrest Gump"  # 值

7、hdel方法:

HDEL key field [field ...]

删除哈希表key中的一个或多个指定域,不存在的域将被忽略。

备注:在Redis2.4以下的版本里,HDEL每次只能删除单个域,如果你需要在一个原子时间内删除多个域,请将命令包含在MULTIEXEC块内。

测试数据

redis> HGETALL abbr
1) "a"
2) "apple"
3) "b"
4) "banana"
5) "c"
6) "cat"
7) "d"
8) "dog"

# 删除单个域

redis> HDEL abbr a
(integer) 1

# 删除不存在的域

redis> HDEL abbr not-exists-field
(integer) 0

# 删除多个域

redis> HDEL abbr b c
(integer) 2

redis> HGETALL abbr
1) "d"
2) "dog"

8、hlen方法:

HLEN key

返回哈希表key中域的数量。

redis> HSET hash_name jack "Jack Sparrow"
(integer) 1

redis> HSET hash_name gump "Forrest Gump"
(integer) 1

redis> HLEN hash_name
(integer) 2

9、hexists方法:


HEXISTS key field

查看哈希表key中,给定域field是否存在。

redis> HEXISTS phone myphone
(integer) 0

redis> HSET phone myphone nokia-1110
(integer) 1

redis> HEXISTS phone myphone
(integer) 1

9、hincrby方法:

INCRBY key field increment

为哈希表key中的域field的值加上增量increment。

增量也可以为负数,相当于对给定域进行减法操作。

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

如果域field不存在,那么在执行命令前,域的值被初始化为0。

对一个储存字符串值的域field执行HINCRBY命令将造成一个错误。

本操作的值限制在64位(bit)有符号数字表示之内。

# 情况1:increment为正数

redis> HEXISTS counter page_view # 对空域进行设置
(integer) 0

redis> HINCRBY counter page_view 200
(integer) 200

redis> HGET counter page_view
"200"


# 情况2:increment为负数

redis> HGET counter page_view
"200"

redis> HINCRBY counter page_view -50
(integer) 150

redis> HGET counter page_view
"150"


# 情况3:尝试对字符串值的域执行HINCRBY命令

redis> HSET myhash string hello,world    # 设定一个字符串值
(integer) 1

redis> HGET myhash string
"hello,world"

redis> HINCRBY myhash string 1   # 命令执行失败,错误。
(error) ERR hash value is not an integer

redis> HGET myhash string    # 原值不变
"hello,world"

10、hkeys方法:


HKEYS key

返回哈希表key中的所有域。

# 情况1:哈希表非空

redis> HMSET website google www.google.com yahoo www.yahoo.com
OK

redis> HKEYS website
1) "google"
2) "yahoo"


# 情况2:空哈希表/key不存在

redis> EXISTS fake_key
(integer) 0

redis> HKEYS fake_key
(empty list or set)

11、hvals方法:


HVALS key

返回哈希表key中的所有值。


# 情况1:非空哈希表

redis> HMSET website google www.google.com yahoo www.yahoo.com
OK

redis> HVALS website
1) "www.google.com"
2) "www.yahoo.com"


# 情况2:空哈希表/不存在的key

redis> EXISTS not_exists
(integer) 0

redis> HVALS not_exists
(empty list or set)


您可能感兴趣的文档:

--结束END--

本文标题: NoSQL----Redis 2.4--Hash

本文链接: https://www.lsjlt.com/news/38133.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis属于nosql吗
    是的,redis 是 nosql 数据库类型。它采用键值存储数据模型,将数据存储在键值对中,具有缓存、会话管理、实时分析、消息队列、计数器和排名等功能。 Redis 是否属于 NoSQ...
    99+
    2024-04-20
    mysql oracle redis 键值对
  • redis的一致性hash和hash槽是什么
    这篇文章主要讲解了“redis的一致性hash和hash槽是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“redis的一致性hash和hash槽是什么”...
    99+
    2024-04-02
  • NoSQL之redis(数据类型下)
    1.set类型(1)命令①增加元素      语法:SADD key member [member ...]②删除元素   &...
    99+
    2024-04-02
  • redis如何取hash的值
    目录redis取hash的值redis中存值是Hash冲突如何解决总结redis取hash的值 命令:可以取得对应的hash中的具体值 hmget s_account:208 acc...
    99+
    2023-01-28
    redis取hash的值 redis hash redis hash值
  • redis中的hash怎么排序
    redis中hash的排序方法:使用sort对hash进行排序,代码如下:插入几条hash数据。127.0.0.1:6379> hmset soft:1 id 1 title mobile download 123 created 122O...
    99+
    2024-04-02
  • redis怎么获取hash的key
    在 Redis 中,可以通过使用 HKEYS 命令来获取指定 hash 数据结构的所有 key 值。示例代码如下: 127.0.0....
    99+
    2024-04-09
    redis
  • redis中hash如何实现的
    这篇文章主要介绍redis中hash如何实现的,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!0.前言redis是KV型的内存数据库, 数据库存储的核心就是Hash表, 我们执行sel...
    99+
    2024-04-02
  • Redis中Hash类型的使用
    目录Hash与String比较Hash类型的常见命令(显而易见,在String命令前加入H就是Hash的命令) 1.HSET key field  value:添加或修改hash类型key的field...
    99+
    2023-06-09
    Redis Hash类型 Redis Hash
  • redis怎么获取hash的值
    要获取Redis中hash的值,可以使用HGET命令,语法如下: HGET key field 其中,key为hash的键,fiel...
    99+
    2024-04-09
    redis
  • redis中Hash类型有什么用
    这篇文章将为大家详细讲解有关redis中Hash类型有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Hash类型是String类型的field和value映射表,或...
    99+
    2024-04-02
  • Redis中怎么使用hash类型
    Redis中怎么使用hash类型,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 hash类型特别适...
    99+
    2024-04-02
  • redis中hash的用法有哪些
    Redis中hash的用法有以下几种:1. 存储对象:使用hash数据结构可以将一个对象的各个属性存储在同一个hash中。例如,可以...
    99+
    2023-09-06
    redis hash
  • redis删除hash的实现方式
    目录Redis删除hash方式redis之hash类型解读redis中存取hash类型常用命令hash命令小结总结redis删除hash方式 在工作中遇到删除hash类型的缓存时遇到了,怎样也删不掉redis里面的缓存,...
    99+
    2023-01-28
    redis删除hash redis hash redis hash删除
  • redis学习之NoSQL是什么意思
    小编给大家分享一下redis学习之NoSQL是什么意思,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、互联网时代背景下大机遇,为什么用NoSQL1.1单机MySQL的美好年代在90年代,...
    99+
    2024-04-02
  • redis中hash是怎么实现的
    在Redis中,Hash是通过字典(dict)来实现的。字典是一种内部实现为哈希表的数据结构,用于存储键值对。字典的实现原理如下:1...
    99+
    2023-09-05
    redis
  • redis中hash表内容如何删除
    小编给大家分享一下redis中hash表内容如何删除,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!hash:Redis hash是一个string类型的field和value的映射表,hash...
    99+
    2024-04-02
  • redis中Hash字典操作的方法
    目录1.Redis操作之Hash操作redis hash字典操作1.Redis操作之Hash操作 redis支持五大数据类型,只支持第一层,也就说字典的value值,必须是字符串 如...
    99+
    2024-04-02
  • Spring Boot整合 NoSQL 数据库 Redis详解
    目录引言一、环境准备二、构建Spring Boot项目三、引入Redis依赖四、Reds相关配置五、添加Redis配置类六、测试一下引言 在日常的开发中,除了使用 Spring Bo...
    99+
    2024-04-02
  • redis的hash实现原理是什么
    Redis的Hash实现原理是使用哈希表(Hash Table)来存储数据。哈希表是一种数据结构,可以快速、高效地查找和存储键值对。...
    99+
    2024-04-03
    redis
  • redis如何删除hash所有数据
    要删除Redis中的所有哈希数据,可以使用DEL命令来删除指定的哈希键。如果要删除所有哈希数据,可以使用SCAN命令来遍历所有哈希键...
    99+
    2024-04-09
    redis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作