微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NoSQL之Redis对数据类型hash的操作

一、简介

Redishash一个string类型的field和value的映射表。它的添加删除操作都是0(1)(平均)。hash特别适合存储对象,将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。

二、具体操作

1.hset hashkey filed value:设置一个名为hashkey的hash表里面field的指定值为value,如果key不存在,则自动创建。若设置成功返回integer 1否则返回错误信息。

127.0.0.1:6379> hset hashkey1 field1 value1
(integer) 1

127.0.0.1:6379> hget hashkey1 field1
"value1"

类似一张表里只能操作一个字段,可以设置这个字段的值,或者取这个字段的值。

2.hget hashkey field:获取hashkey的hash表中field的value值

127.0.0.1:6379> hget hashkey1 field1
"value1"

3.hsetnx hashkey field value:设置hashkey field为指定value值,如果key不存在,那么先创建,返回interger 1。如果存在则返回integer 0。(创建不成功)

127.0.0.1:6379> hsetnx hashkey2 f2 v2
(integer) 1
127.0.0.1:6379> hget hashkey2 f2
"v2"
127.0.0.1:6379> hsetnx hashkey2 f2 v22
(integer) 0
127.0.0.1:6379> hget hashkey2 f2
"v2"

上面的操作,首先用hsetnx设置hashkey2里f2对应的值为v2,返回integer 1证明设置成功,然后获取这个值为v2是正确的。接着继续对已经存在的hashkey2里的f2设置新值v22,这个时候返回integer 0 证明是失败的。再用hget获取这个值发现还是v2并没有改变。

127.0.0.1:6379> hsetnx hashkey2 f3 v3
(integer) 1
127.0.0.1:6379> hget hashkey2 f3
"v3"

通过上面的操作我们可以看到这个nx是来限定hashkey中的field的,与hashkey没有关系,一个hashkey可以设置无数多个field。

4.hmset hashkey field1 value1 field2 value2 field3 value3....:同时设置hashkey中的多个field值。

127.0.0.1:6379> hmset hashkey1 f1 v1 f2 v2 f3 v3
OK
127.0.0.1:6379> hget hashkey1 f1
"v1"
127.0.0.1:6379> hget hashkey1 f2
"v2"
127.0.0.1:6379> hmset hashkey1 f1 v11 f2 v22
OK
127.0.0.1:6379> hget hashkey1 f1
"v11"
127.0.0.1:6379> hget hashkey1 f2
"v22"

通过上面的命令操作很容易理解这个命令的作用,注意的一点就是,这个命令可以覆盖已经存在field的value值,可以设置新的newvalue。

5.hmget hashkey field1 field2 field3...:批量获取hashkey里的field值

127.0.0.1:6379> hmget hashkey1 f1 f2 f3
1) "v11"
2) "v22"
3) "v3"

6.hincrby hashkey field count:对hashkey里的field值增加count。成功返回相加后的值,失败返回错误信息

127.0.0.1:6379> hincrby hashkey1 num 2
(integer) 2

127.0.0.1:6379> hincrby hashkey1 num 3
(integer) 5

127.0.0.1:6379> hincrby hashkey1 num 4
(integer) 9
127.0.0.1:6379> hincrby hashkey1 num -2

(integer) 7
这里需要注意的就是,count可以是负数,证明是做减法。

若一开始key不存在,那么认起始值为0(通过第一条操作可以看出来,一开始num不存在,用hincrby给它加2,结果是2)

7.hexists hashkey field:检查hashkey里的field是否存在。如果存在返回integer 1,如果不存在返回integer 0

127.0.0.1:6379> hexists hashkey1 f1
(integer) 1
127.0.0.1:6379> hexists hashkey1 f7
(integer) 0

8.hlen hashkey:返回指定hashkey中的field数量

127.0.0.1:6379> hlen hashkey1
(integer) 6

127.0.0.1:6379> lenhashkey3
(error) ERR unkNown command 'lenhashkey3'

9.hdel hashkey field:删除指定hash里的一个field字段

127.0.0.1:6379> hget hashkey1 f1
"v11"
127.0.0.1:6379> hdel hashkey1 f1
(integer) 1
127.0.0.1:6379> hget hashkey1 f1
(nil)

10.hkeys hashkey:返回hash中所有的field,相当于PHP中的array_keys

127.0.0.1:6379> hkeys hashkey1
1) "field1"
2) "f2"
3) "f3"
4) "num"
5) "num1"

127.0.0.1:6379> hkeys hashkey3
(empty list or set)

通过上面的操作可以看出hashkey1中有5个field而hashkey3中没有field值,是空的。

11.hvals hashkey:返回hash中的所有value,相当于PHP中的array_values

127.0.0.1:6379> hvals hashkey1
1) "value1"
2) "v22"
3) "v3"
4) "7"
5) "4"
127.0.0.1:6379> hvals hashkey3
(empty list or set)

12.hgetall hashkey:获取某个hash中全部的field和value

127.0.0.1:6379> hgetall hashkey1 1) "field1" 2) "value1" 3) "f2" 4) "v22" 5) "f3" 6) "v3" 7) "num" 8) "7" 9) "num1" 10) "4"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


校园网上订餐系统系统主要功能模块包括公告内容(公告栏、轮播图)用户管理(管理员、普通用户)、内容模块(资讯分类、资讯列表)、模块管理(菜品分类、菜单、订单表),采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取MySQL作为后台数据的主要存储单元,采用SSM框架、Java技术、Ajax技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。
从今天开始,正式进入项目阶段。本次的项目是跟着黑马的瑞吉外卖项目走的,有借鉴和使用,也有自己的观点和实现。由于本课程用到了很多前端知识(了解),所以关于前端分析的时候,我应该会选择跳过或者简略一看;大家学有余力或者对前端已经轻车熟路的可以自己看看黑马的视频。本次的项目并没有从前端到后台都自己进行搭建,虽然我也很向往这个,但是还是在学精后端再去深入前端吧,我也没有余力,只是后端的内容就已经让我头大了。
在可预见的将来,IT不会萎缩,只会越发展越庞大,最终会渗透到人类社会的每一个角落。在这个过程中会不断地产生新的领域和新的机会,我们则需要在这个风口上抓住机会。从技术层面来说,吃透测试理论和方法,掌握最少一门开发语言,能够熟练使用最少一种自动化、接口或APP测试工具将成为入行的基本要求。从业务层面来说,新兴或热点领域将来带巨大的需求量和丰厚的薪酬,这也要求我们不断的了解新的领域、学习新的知识
vulntarget-b靶场最详细通关记录。
MongoDB是一个开源、高性能、支持海量数据存储的。
【NoSQL数据库技术与应用】课本代码、课后答案(持续更新)
MongoDB 的安装详细过程
Redisredis 简介redis 采用的是单线程的 KV 模型,由 C 语言编写,1. Redis 中的事务?2. Redis 中的数据结构3. Redis 中如何保证缓存和数据库双写时的数据一致性?4. 如何使用 Redis 做异步队列和延时队列?5. Redis 中的过期策略6. Redis 中的内存淘汰机制7. Redis 中的缓存击穿,缓存穿透,缓存雪崩8. Redis 中的分布式锁9. Redis和memcache的区别10. Redis 中的持久化机制11. Red
Redis必背面试题