Hash哈希类型

HeJin大约 1 分钟数据库技术Redis

Map集合。key - <key-value>。本质和String类型没有太大区别,还是一个简单的key-value。

##########################################################################
# 1、存值取值
127.0.0.1:6379> hset myhash field1 hejin				# set一个具体的key-value
(integer) 1
127.0.0.1:6379> hget myhash field1						# 获取一个字段的值
"hejin"
127.0.0.1:6379> hmset myhash field1 hello field2 world	# 同时set多个key-value
OK
127.0.0.1:6379> hmget myhash field1
1) "hello"
127.0.0.1:6379> hmget myhash field2
1) "world"
127.0.0.1:6379> hmget myhash field1 field2				# 获取多个字段的值
1) "hello"
2) "world"
127.0.0.1:6379> HGETALL myhash							# 获取全部的数据
1) "field1"
2) "hello"
3) "field2"
4) "world"
##########################################################################
# 2、删除
127.0.0.1:6379> hdel myhash field1						# 删除hash指定key字段。对应的value也就没有了
(integer) 1
127.0.0.1:6379> HGETALL myhash
1) "field2"
2) "world"

##########################################################################
# 3、获取hash长度
127.0.0.1:6379> hlen myhash			# 获取hash表的字段数量
(integer) 1
127.0.0.1:6379> hmset myhash field1 hello field2 world
OK
127.0.0.1:6379> hgetall myhash
1) "field2"
2) "world"
3) "field1"
4) "hello"
127.0.0.1:6379> hlen myhash
(integer) 2

##########################################################################
# 4、判断hash中的key是否存在
127.0.0.1:6379> HEXISTS myhash field1	# 判断hash中的指定字段是否存在
(integer) 1
127.0.0.1:6379> HEXISTS myhash field3
(integer) 0

##########################################################################
# 5、只获取所有field或者所有的value
127.0.0.1:6379> hkeys myhash	# 获取所有field
1) "field2"
2) "field1"
127.0.0.1:6379> hvals myhash	# 获取所有value
1) "world"
2) "hello"

##########################################################################
# 6、
127.0.0.1:6379> hset myhash field3 5		
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "field2"
2) "world"
3) "field1"
4) "hello"
5) "field3"
6) "5"
127.0.0.1:6379> HINCRBY myhash field3 1		# 指定增量
(integer) 6
127.0.0.1:6379> HINCRBY myhash field3 -1	# 负数表示减少
(integer) 5
127.0.0.1:6379> hsetnx myhash field4 hello	# 如果不存在,则可以设置
(integer) 1
127.0.0.1:6379> hsetnx myhash field4 hello	# 如果存在,则不能设置
(integer) 0

hash变更的数据:user、name、age。尤其是用户信息之类的,经常变动的信息。hash更适合于存储对象。String更加适合字符串存储。