哈希Hash
hash表现形式,有些像pyhton中的dict,可以存储一组关联性较强的数据。
方法中 name对应字符串,key指的是hash中的key,value是hsah的value;value只能是字符串(包括bytes)、数字格式。不能嵌套hash
#1【重点】 hset(name, key=None, value=None, mapping=None)
name对应的hash中设置一个键值对(不存在,则创建;否则,更新修改)
参数:
name,redis的name
key,name对应的hash中的key
value,name对应的hash中的value
mapping, 批处理设置键值对,py38以后批量插入使用hset,启用hmset
如:
r.hset(\'info\', \'name\', \'xliu\') # info ---> {\'name\':\'xliu\'}
r.hset(\'yyy\',mapping={\'x1\':\'o1\', \'x2\':\'o2\'})
#2 hsetnx(name, key, value)
当name对应的hash中不存在当前key时则创建(相当于添加),并返回1;存在则不处理,返回0
#3 hmset(name, mapping)
在name对应的hash中批量设置键值对
参数:
name,redis的name
mapping,字典,如:{\'k1\':\'v1\', \'k2\': \'v2\'}
如:
r.hmset(\'xx\', {\'k1\':\'v1\', \'k2\': \'v2\'})
注意:将要被hset代替
r.hset(\'yyy\',mapping={\'x1\':\'o1\', \'x2\':\'o2\'})
#4【重点】 hget(name,key)
获取name这个hash中key键对应的值
#5【重点】 hmget(name, keys, *args)
在name对应的hash中获取多个key的值,列表的形式返回
参数:
name,reids对应的name
keys,要获取key集合,如:[\'k1\', \'k2\', \'k3\']
*args,要获取的key,如:k1,k2,k3
如:
r.mget(\'yyy\', [\'x1\', \'x2\'])
print r.hmget(\'yyy\', \'x1\', \'x2\') # [b\'o1\', b\'o2\']
#6 hgetall(name)
获取name对应hash的所有键值对,【慎用:数据量太大会撑爆内存】
如:
print(r.hgetall(\'yyy\')) # {b\'x1\': b\'o1\', b\'x2\': b\'o2\'}
#7 hlen(name)
获取name对应的hash中键值对的个数
#8 hkeys(name)
获取name对应的hash中所有的key的值
如
print(r.hkeys(\'yyy\')) # [b\'x1\', b\'x2\']
#9 hvals(name)
获取name对应的hash中所有的value的值
#10 hexists(name, key)
检查name对应的hash是否存在当前传入的key,返回布尔值
#11 hdel(name, *keys)
将name对应的hash中指定key的键值对删除,支持删除多个
如
r.hdel(\'info\', \'name\', \'age\')
#12【重点】 hincrby(name, key, amount=1)
自增name对应的hash中的指定key的值,不存在则创建key=amount
参数:
name,redis中的name
key, hash对应的key
amount,自增数(整数)
#13 hincrbyfloat(name, key, amount=1.0)
自增name对应的hash中的指定key的值,不存在则创建key=amount
参数:
name,redis中的name
key, hash对应的key
amount,自增数(浮点数)
#14【重点】 hscan_iter(name, match=None, count=None)
利用yield封装hscan创建生成器,实现分批去redis中获取数据
参数:
match,匹配指定key,默认None 表示所有的key
count,每次分片最少获取个数,默认None表示采用Redis的默认分片个数
如:
for item in r.hscan_iter(\'xx\'):
print(item) # 打印所有的key-value键值对
for item in r.hscan_iter(\'xx\', match=\'k1\'):
print(item) # 打印k1这个键和其对应的值