Redis Hash操作
hset(name, key, value)
hset('people','name','张三')
----> {'people':{'name' : '张三'}}
'''
作用:设置hash类型值;
格式:hset key field value
'''
redis:
127.0.0.1:6379> hset user name wang
(integer) 1
127.0.0.1:6379> hset user age 18
(integer) 1
hmset(name, mapping)
hmset('people',{'name':'张三','age':'20'})
-----> {'people':{'name':'张三','age':'20'}}
'''
作用:同时为一个key的设置多个field;值已存在就替换旧值
格式:hmset key field value [field value …]
'''
redis:
127.0.0.1:6379> hset user name zhen
(integer) 1
127.0.0.1:6379> hmset user name hhh age 18 phone 110
OK
127.0.0.1:6379> hget user name
"hhh"
hget(name,key)
{'people':{'name':'张三','age':'20'}}
hget('people','age') -----> 20
hget('people','name') -----> '张三'
'''
作用:获取hash类型某个key下的某个field的值
格式:hget key field
'''
redis:
127.0.0.1:6379> hget user age
"18"
127.0.0.1:6379> hget user name
"wang"
hmget(name, keys, *args)
hmget('people',['name','age'])
'''
作用:同时获取一个key的多个field的值;
格式:hmget key field [field …]
'''
redis:
127.0.0.1:6379> hmget user name age phone
1) "hhh"
2) "18"
3) "120"
hgetall(name) 慎用
conn.hgetall('userinfo')
'''
作用:获取一个key下所有field和value
格式:hgetall key
'''
redis:
127.0.0.1:6379> hgetall user
1) "name"
2) "hhh"
3) "phone"
4) "120"
5) "age"
6) "18"
hlen(name)
conn.hlen('userinfo')
'''
作用:返回指定key的field数量。
格式:hlen key
'''
redis:
127.0.0.1:6379> hlen user
(integer) 1
hkeys(name)
conn.hkeys('userinfo')
'''
作用:获取key对应的所有的field
格式:hkeys key
'''
redis:
127.0.0.1:6379> hkeys user
1) "name"
2) "phone"
3) "age"
hvals(name)
conn.hvals('userinfo')
'''
作用:获取key对应的所有value;
格式:hvals key
'''
redis:
127.0.0.1:6379> hvals user
1) "hhh"
2) "120"
3) "18"
hexists(name, key)
conn.hexists('userinfo','wife')
'''
作用:测试给定key下的field是否存在。
格式:hexists key field
'''
redis:
# 刚刚删除了name和age,所以不存在返回0
127.0.0.1:6379> hexists user name
(integer) 0
# 存在返回1
127.0.0.1:6379> hexists user phone
(integer) 1
hdel(name,*keys)
conn.hdel('userinfo','age')
'''
作用:删除key对应的filed的值,field可以写多个
格式:hdel key field [field …]
'''
redis:
127.0.0.1:6379> hdel user name age
(integer) 2
127.0.0.1:6379> hgetall user
1) "phone"
2) "120"
hincrby(name, key, amount=1)
conn.hincrby('userinfo1','age')
'''
作用:增减数值
格式:hincrby key field increment
'''
redis:
127.0.0.1:6379> hincrby user age 2
(integer) 20
127.0.0.1:6379> hget user age
"20"
hincrbyfloat(name, key, amount=1.0)
conn.hincrby('userinfo1','age')
'''
作用:增减数值
格式:hincrby key field increment
'''
redis:
redis> HSET mykey field 10.50
(integer) 1
redis> HINCRBYFLOAT mykey field 0.1
"10.6"
redis> HINCRBYFLOAT mykey field -5
"5.6"
redis> HSET mykey field 5.0e3
(integer) 0
redis> HINCRBYFLOAT mykey field 2.0e2
"5200"
redis>
hscan(name, cursor=0, match=None, count=None)--- >这个不是直接用,需要配合hscan_iter来用
res=conn.hscan('htest',cursor=0,count=55)
'''
作用:用于迭代哈希表中的键值对。
格式:HSCAN key cursor [MATCH pattern] [COUNT count]
cursor - 游标。
pattern - 匹配的模式。
count - 指定从数据集里返回多少元素,默认值为 10
'''
redis:
> HMSET sites google "google.com" runoob "runoob.com" weibo "weibo.com" 4 "taobao.com"
OK
> HSCAN sites 0 match "run*"
1) "0"
2) 1) "runoob"
2) "runoob.com"
hscan_iter(name, match=None, count=None)
# 把htest数据全取出来打印,批量获取,每次取10条
for item in conn.hscan_iter('htest',count=10):
print(item)
# for item in conn.hgetall('htest'):
# print(item)