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 127.0.0.1:6379> hget hashkey1 field1 2.hget hashkey field:获取hashkey的hash表中field的value值 127.0.0.1:6379> hget hashkey1 field1 3.hsetnx hashkey field value:设置hashkey field为指定value值,如果key不存在,那么先创建,返回interger 1。如果存在则返回integer 0。(创建不成功) 127.0.0.1:6379> hsetnx 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 通过上面的操作我们可以看到这个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 5.hmget hashkey field1 field2 field3...:批量获取hashkey里的field值 127.0.0.1:6379> hmget hashkey1 f1 f2 f3 6.hincrby hashkey field count:对hashkey里的field值增加count。成功返回相加后的值,失败返回错误信息 127.0.0.1:6379> hincrby hashkey1 num 2 127.0.0.1:6379> hincrby hashkey1 num 3 127.0.0.1:6379> hincrby hashkey1 num 4 (integer) 7 若一开始key不存在,那么默认起始值为0(通过第一条操作可以看出来,一开始num不存在,用hincrby给它加2,结果是2) 7.hexists hashkey field:检查hashkey里的field是否存在。如果存在返回integer 1,如果不存在返回integer 0 (integer) 1 127.0.0.1:6379> hexists hashkey1 f7 (integer) 0 8.hlen hashkey:返回指定hashkey中的field数量。 127.0.0.1:6379> hlen hashkey1 127.0.0.1:6379> lenhashkey3 9.hdel hashkey field:删除指定hash里的一个field字段 127.0.0.1:6379> hget hashkey1 f1 10.hkeys hashkey:返回hash中所有的field,相当于php中的array_keys 127.0.0.1:6379> hkeys hashkey1 127.0.0.1:6379> hkeys hashkey3 通过上面的操作可以看出hashkey1中有5个field而hashkey3中没有field值,是空的。 11.hvals hashkey:返回hash中的所有value,相当于php中的array_values 127.0.0.1:6379> hvals hashkey1 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" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |