数据库
首页 > 数据库> > 13、Python3 Redis Hash

13、Python3 Redis Hash

作者:互联网

Redis hash 是一个键值(key=>value)对集合。

Redis hash 是一个 string 类型的 fieldvalue 的映射表,hash 特别适合用于存储对象。Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)。

Hash基本命令:

1、单个增加/取出

(1)单个增加

hset(key, field, value)

返回值

如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。

参数

注: hsetnx(key, field, value),当key对应的hash中不存在当前field时则创建(相当于添加)

(2)单个取出

hget(key, field)

返回值

返回给定字段的值。如果给定的字段或field不存在时,返回 None

参数

示例

import redis
import time

pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)

r.hset("hash1", "k1", "v1”)
r.hset("hash1", "k2", "v2”)
print(r.hkeys("hash1")) 				# 取hash1中所有的key
print(r.hget("hash1", "k1")) 			# 单个取hash1的key对应的值
print(r.hmget("hash1", "k1", "k2")) 	# 多个取hash1的key对应的值

       r.hsetnx("hash1", "k2", "v3") 	# 只能新建
print(r.hget("hash1", "k2"))

2、批量增加/取出

(1)批量增加

该命令用于同时将多个 field-value (字段-值)对设置到哈希表中。此命令会覆盖哈希表中已存在的字段。如果哈希表不存在,会创建一个空哈希表,并执行 hmset 操作。

hmset(key, mapping)

返回值

如果命令执行成功,返回 OK

参数

(2)批量取出

该命令用于返回哈希表中,一个或多个给定字段的值。
如果指定的字段不存在于哈希表,那么返回一个None值。

hmget(key, fields, *args)

返回值

一个包含多个给定字段关联值的表,表值的排列顺序和指定字段的请求顺序一样。

参数

示例

r.hmset("hash2", {"k2": "v2", "k3": "v3"})
print(r.hmget("hash2", "k2", "k3")) # 批量取出"hash2"的key-k2 k3对应的value —方1
print(r.hmget("hash2", ["k2", "k3"])) # 批量取出"hash2"的key-k2 k3对应的value --方式2

3、取出所有的键值对

hgetall(key)

获取key对应hash的所有键值对,若key不存在,返回空列表。

print(r.hgetall(‘hash1’))

4、获取所有键值对的格式hash长度

hlen(key)

获取key对应的hash中,键值对的个数,当key不存在时,返回0。

print(r.hlen(‘hash1'))

5、获取所有的keys(类似字典的取所有keys

hkeys(key)

获取key对应的hash中所有的field的值,当key不存在时,返回一个空列表

print(r.keys(‘hash1'))

6、得到所有的value

hvals(key)

获取key对应的hash中所有field等值,如果key不存在,则返回空列表

print(r.hvals(‘hash1'))

7、判断成员是否存在

hexists(key, field)

返回值

如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0 。

print(r.hexists(‘hash1’, ‘k4’)) # 不存在返回False
print(r.hexists(‘hash1’, ‘k1’)) # 存在返回True

8、删除键值对

hdel(key, *fields)

返回值

被成功删除字段的数量,不包括被忽略的字段。

print(r.hgetall("hash1"))
r.hset("hash1", "k2", "v222") 	# 修改已有的key k2
r.hset("hash1", "k11", "v1") 	# 新增键值对 k11
r.hdel("hash1", "k1") 			# 删除一个键值对
print(r.hgetall("hash1"))

9、自增自减整数

key对应的value–整数 自增1或者2,或者别的整数 负数就是自减

hincrby(key, field, amount=1)

自增name对应的hash中的指定key的值,不存在则创建key,并初始化value值为0

返回值

执行 HINCRBY 命令之后,哈希表中字段的值。

参数

示例

r.hset("hash1", "k3", 123)
r.hincrby("hash1", "k3", amount=-1)
print(r.hgetall("hash1"))
r.hincrby("hash1", "k4", amount=1)  # 不存在的话,value默认就是1
print(r.hgetall("hash1"))

10、自增自减浮点数

key对应的value–浮点数 自增1.0或者2.0,或者别的浮点数 负数就是自减

hincrbyfloat(key, field, amount=1.0)

自增key对应的hash中的指定field的值,不存在则创建key,并初始化value值为0

返回值

执行 HINCRBY 命令之后,哈希表中字段的值。

参数

示例

r.hset("hash1", "k5", "1.0")
r.hincrbyfloat("hash1", "k5", amount=-1.0)    # 已经存在,递减-1.0
print(r.hgetall("hash1"))

r.hincrbyfloat("hash1", "k6", amount=-1.0)    # 不存在,value初始值是-1.0 每次递减1.0
print(r.hgetall("hash1"))

标签:13,Hash,Redis,value,field,hash1,key,print,hash
来源: https://blog.csdn.net/sinat_33924041/article/details/100165046