如何处理 redis-py `pipeline.execute()` 返回的 `4` 数组?
How to handle an array of `4`s returned by redis-py `pipeline.execute()`?
我正在使用 redis-py 处理对 Redis 存储的批量插入。
我写了下面很简单的方法:
import redis
def push_metadata_to_redis(list_of_nested_dictionaries):
redis_client = redis.Redis(host='localhost', port=6379, db=0)
redis_pipeline = redis_client.pipeline(transaction=False)
for dictionary in list_of_nested_dictionaries:
for k, inner_dict in dictionary.items()
redis_pipeline.hset(k, mapping=inner_dict)
result = redis_pipeline.execute(raise_on_error=True)
print(result)
基本上是:
- 输入包含数千个词典的列表
- 对于每个字典,将每个 key/value 项推送到 Redis 中(值也是字典,这就是我使用
hset
的原因)
每个 dictionary
包含 ~10k 个元素,因此 redis_pipeline.execute(raise_on_error=True)
每 ~10k 发生一次 hset
.
我注意到几分钟后,result
值从 0
的数组步进到 4
的数组,这让我很担心。
一方面,我希望任何错误都应作为异常 (raise_on_error=True
) 提出,但另一方面,我无法在文档中找到有关此行为的任何参考,我也没有明白那是什么意思。
所以我的问题是:
result
等于4
的数组是不是意味着redis_pipeline.execute(raise_on_error=True)
操作出了问题?
- 如果是,我怎么知道出了什么问题?
- 如果不是,那是什么意思?
提前致谢。
因此,当使用 HSET 命令时,return 值是添加的字段数
# check if key exists
127.0.0.1:6379> EXISTS key1
(integer) 0
# add a hash with 4 k/v pairs
127.0.0.1:6379> HSET key1 a 1 b 1 c 1 d 1
(integer) 4
# Set same fields for an existing hash
127.0.0.1:6379> HSET key1 a 1 b 1 c 1 d 1
(integer) 0
# Add an additional k/v pair
127.0.0.1:6379> HSET key1 a 1 b 1 c 1 d 1 e 1
(integer) 1
127.0.0.1:6379> HSET key1 f 1
(integer) 1
所以缓存中可能已经存在那些为 0 的条目,并且没有添加新字段。
我正在使用 redis-py 处理对 Redis 存储的批量插入。
我写了下面很简单的方法:
import redis
def push_metadata_to_redis(list_of_nested_dictionaries):
redis_client = redis.Redis(host='localhost', port=6379, db=0)
redis_pipeline = redis_client.pipeline(transaction=False)
for dictionary in list_of_nested_dictionaries:
for k, inner_dict in dictionary.items()
redis_pipeline.hset(k, mapping=inner_dict)
result = redis_pipeline.execute(raise_on_error=True)
print(result)
基本上是:
- 输入包含数千个词典的列表
- 对于每个字典,将每个 key/value 项推送到 Redis 中(值也是字典,这就是我使用
hset
的原因)
每个 dictionary
包含 ~10k 个元素,因此 redis_pipeline.execute(raise_on_error=True)
每 ~10k 发生一次 hset
.
我注意到几分钟后,result
值从 0
的数组步进到 4
的数组,这让我很担心。
一方面,我希望任何错误都应作为异常 (raise_on_error=True
) 提出,但另一方面,我无法在文档中找到有关此行为的任何参考,我也没有明白那是什么意思。
所以我的问题是:
result
等于4
的数组是不是意味着redis_pipeline.execute(raise_on_error=True)
操作出了问题?- 如果是,我怎么知道出了什么问题?
- 如果不是,那是什么意思?
提前致谢。
因此,当使用 HSET 命令时,return 值是添加的字段数
# check if key exists
127.0.0.1:6379> EXISTS key1
(integer) 0
# add a hash with 4 k/v pairs
127.0.0.1:6379> HSET key1 a 1 b 1 c 1 d 1
(integer) 4
# Set same fields for an existing hash
127.0.0.1:6379> HSET key1 a 1 b 1 c 1 d 1
(integer) 0
# Add an additional k/v pair
127.0.0.1:6379> HSET key1 a 1 b 1 c 1 d 1 e 1
(integer) 1
127.0.0.1:6379> HSET key1 f 1
(integer) 1
所以缓存中可能已经存在那些为 0 的条目,并且没有添加新字段。