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

原创 2013年12月02日 08:48:25

一、简介

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"

相关文章推荐

Redis在Java中使用的一些简单介绍

介绍Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(li...

Lua utf8中文字符个数和子串截取

note 目录 utf8 字符规律 utf8 中文字符的大小(占多少个字节) utf8 字符串的长度 utf8 获取字符串的子串 测试example 1: utf8 字符规律字符串的首个byte表示了...

NoSQL之Redis对zset(有序集合)数据类型的操作

一、简介 Sorted set(zset)是set的升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新得值调整顺序。可以理解为有两...

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

一、简介   String是最简单的数据类型,一个Key对应一个Value,String类型是二进制安装的。Redis的string可以包含任何数据,比如jpg图片或者序列化的对象。...

redis:hash数据类型与操作

Redis hash是一个string类型的field和value的映射表.一个key可对应多个field,一个field对应一个value。将一个对象存储为hash类型,较于每个字段都存储成stri...

NoSQL之Redis技术(二):数据类型和命令

在上篇博客中我写了redis技术的入门以及环境的搭配,今天正式进入redis内容的介绍,今天主要介绍redis技术的数据类型和一些常用的命令。 我们说MySQL的数据类型可分为三大类,一是数值类型(...
  • qian_ch
  • qian_ch
  • 2017年03月27日 12:05
  • 449

NoSql之Redis数据类型

通过前面两篇博客,我们已经知道了NoSql以及redis的安装,今天我们正式介绍redis。redis简介       Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的...

redis学习--基础5 数据类型hash

1.概述 hash是一个string类型的field和value的映射表。添加,删除操作都是o

四,redis数据类型-hash

hset,hget对hash类型的数据进行设值和取值 hmset,hmget对多个hash类型的数据进行设值和取值 hincrby,hincrbyfloat按照给定的整型,浮点型数据对数值增加 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NoSQL之Redis对数据类型hash的操作
举报原因:
原因补充:

(最多只允许输入30个字)