到底什么是散列类型那,真TMD专业术语。
先看下这个
{
"car" : {'price':100,'name':'Jeep',‘color’:'red'}
"car2" : {'price':200,'name':'BMW',‘color’:'blue','who':'me':}
}
"car" : {'price':100,'name':'Jeep',‘color’:'red'} TMD,这不跟python里的数据类型嵌套一样吗,字典里可以有字典
我们说过redis里一个数据库就是一个字典,所以外面的大括号就是数据库,里面就是你存储的值。
散列原来就是用一个key 代表一个字典,艹,专业术语害死人。
NOTE:
形式虽然是上面那样,不过散列有其特殊性,不仅是散列类型,还有其他的类型。特殊性:
"car" : {'price':100,'name':'Jeep',‘color’:'red'} 在redis里 ,这里面的 100 jeep red 只能是字符串,
这种就是错误的,在python是正确定的,也是和python字典的区别
"car" : {'price':[ ],'name':{ },‘color’:'red'}
HSET key field value #key 散列赋值 (更新也是此命令,为什么?字典的特性,存在就替换你)
redis 127.0.0.1:6379> hset car price 100
(integer) 1redis 127.0.0.1:6379> hset car name jeep(integer) 1redis 127.0.0.1:6379> hset car color red(integer) 1HGET key field #获取key 散列值得
redis 127.0.0.1:6379> hget car name
"jeep"redis 127.0.0.1:6379> hget car price"100"redis 127.0.0.1:6379> hget car color"red"HSET key field1 value1
HSET key filed2 value2
替换成
HMSET key field1 value1 field2 value2 #同时设置多个字段的值
redis 127.0.0.1:6379> HMSET car price 500 name 500 color 500
OKHMGET key field1 field2 #相应获取多个字段的值
redis 127.0.0.1:6379> HMGET car price name color
1) "500"2) "500"3) "500"HGETALL key #获取key代表的所有field和值
redis 127.0.0.1:6379> hgetall car
1) "price"2) "500"3) "name"4) "500"5) "color"6) "500"
HEXISTS key field #判断字段是否存在 1代表存在,0代表不存在
redis 127.0.0.1:6379> hexists car price
(integer) 1redis 127.0.0.1:6379> hexists car pri
(integer) 0HSETNX key field value #当字段不存在时赋值,存在的就不管了
redis 127.0.0.1:6379> hsetnx car pri 500
(integer) 1redis 127.0.0.1:6379> hsetnx car pri 500(integer) 0 # 看这里,有了就返回0HDEL key field [field ....] #删除一个或多个字段
redis 127.0.0.1:6379> hdel car pri
(integer) 1redis 127.0.0.1:6379> hget car pri(nil)redis 127.0.0.1:6379> hdel car price name
(integer) 2redis 127.0.0.1:6379> hgetall car1) "color"2) "500"HKEYS key #所有的field名
redis 127.0.0.1:6379> hkeys car
1) "color"2) "name"3) "price"HVALS key #所有的value
redis 127.0.0.1:6379> hvals car
1) "red"2) "bwm"3) "500"HLEN key #获得field的数量
redis 127.0.0.1:6379> hlen car
(integer) 3