redis hash操作

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)
posted @ 2022-07-13 23:05  春游去动物园  阅读(951)  评论(0编辑  收藏  举报