问题标签 [redis-py]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
7063 浏览

redis - Redis - SET覆盖其他类型

以下代码示例将通过 Python REPL 和 redis-cli 完成/编写。

Redis 服务器 v=2.8.4

背景:在 redis 键值存储中存储一个长时间运行的键(哈希),然后尝试在同一个键值存储中存储另一个键(具有相同的名称,但不同的类型 - 字符串)。

首先是代码,然后是问题:

您首先会注意到 SET 选项会覆盖 HSET。现在,当我尝试用以下内容覆盖 SET 时:

或用相同的 HSET 替换 SET:

为了确保这不是 redis-py 缺陷,我在 redis-cli 中进行了测试:


问题:

1)这是Redis中的一个缺陷还是它实际上应该如何工作?

2)如果这是“它应该如何工作”,为什么我不能用其他人覆盖 SET 类型?

** 编辑:因为回答问题的人不明白 3) .. 我正在编辑它

( s)?

例如。我想要做:

这样我就有 1 个哈希和 1 个相同“密钥”的“其他”类型12345

0 投票
1 回答
567 浏览

python - Redis - 解析远程服务器提供的数据流

我已经在本地设置了 Redis,我想连接到远程服务器,该服务器以 <ID,值> 的形式提供合成数据流。到目前为止,我已经设法使用套接字连接到上面提到的服务器,读取数据流并打印它。相反,我想将这些对存储在哈希数据结构中(稍后我将存储有关每个 ID 的更多信息)。问题是我不知道如何解析数据流以便使用hget以及如何连续使用它。在更高级别,我希望能够将传入数据流中的名称和值作为参数传递给hget. 忘了提我正在使用 Python API。至今:

数据流示例:

我不确定是否可以保证所有行都已完全格式化,但让我们保证。

0 投票
3 回答
7114 浏览

python - redis-py 模块是否可以在集群模式下与 Redis 一起使用?

我正在尝试在集群模式下将redis-py与 redis 一起使用,但我无法让它工作。我看到redis-py-cluster可以工作,但我喜欢 redis-py,因为我一直在使用它,它是推荐的客户端

0 投票
1 回答
130 浏览

redis - 从不断变化的 Redis 键集合中查找值冲突

在我的网站中,允许用户保留相同的用户名。此外,在用户登录的任何时间点,我都会将他们的用户名临时保存在ttl10 分钟的 redis 密钥中。

问题是:有没有办法——使用 Redis——在过去 10 分钟内在线查找所有用户 ID,共享相同的用户名?

目前,我正在提取所有键的值并在 Python 中查找冲突——这并没有真正的帮助,因为我需要在运行时多次执行此操作(并且有很多用户流量)。

我假设我可以创建具有唯一用户名作为键的集合,并将所有用户 ID 存储在集合中,以便让我 O(1) 查找共享相同用户名的用户。但是,我不得不牺牲 10 分钟的 ttl 条件(我需要为每个用户名单独设置)。

顺便说一句,这里是 Redis/Lua 初学者,因此是菜鸟问题(如果是的话)。

0 投票
1 回答
1995 浏览

python - NameError:名称'redis'未定义 - PySpark - Redis

我正在使用addPyFilepyspark 中的方法来加载redis.zip文件。我可以使用加载文件

但是在使用 运行代码时./pyspark,它显示错误:

NameError:名称'redis'未定义

zip( redis.zip) 包含.py文件(client.pyconnection.pyexceptions.pylock.pyutils.py)。

Python 版本是 - 3.5,火花是 2.7

0 投票
2 回答
8771 浏览

python - Redis 断管错误

我们正在尝试通过 redis-py 包将大小为 2.3GB 的腌制对象设置到 redis 中。遇到以下错误。

BrokenPipeError:[Errno 32] 损坏的管道

redis.exceptions.ConnectionError:写入套接字时出现错误 104。对等方重置连接。

我想了解根本原因。是由于服务器端或客户端的输入/输出缓冲区限制吗?是因为 RESP 协议的限制吗?是否允许将 2.3 Gb 的单个值(字节)存储到 Redis 中?

导入redis

r = redis.StrictRedis(host='10.XXX', 端口=7000, db=0)

pickled_object = pickle.dumps(obj_to_be_pickled)

r.set('some_key', pickled_object)

客户端错误

BrokenPipeError:[Errno 32] 损坏的管道

/usr/local/lib/python3.4/site-packages/redis/connection.py(544)send_packed_command()

self._sock.sendall(项目)

服务器端错误

31164:M 04 Apr 06:02:42.334 - 来自客户端的协议错误:id=95 addr=10.2.130.144:36120 fd=11 name=age=0 idle=0 flags=N db=0 sub=0 psub=0 multi =-1 qbuf=16384 qbuf-free=16384 obl=42 oll=0 omem=0 events=r cmd=NULL

31164:M 04 Apr 06:07:09.591 - 来自客户端的协议错误:id=96 addr=10.2.130.144:36139 fd=11 name= age=9 idle=0 flags=N db=0 sub=0 psub=0 multi =-1 qbuf=40 qbuf-free=32728 obl=42 oll=0 omem=0 events=r cmd=NULL

Redis 版本:3.2.8 / 64 位

0 投票
1 回答
1715 浏览

python - 哨兵自动发现master

redis master 可以通过 sentinel 使用:

现在将数据写入主节点:

现在, while # do something,如果master_server崩溃,sentinel将通过投票将一个奴隶提升为主人。因此,master_server.setex(key, 120, new_value)将抛出MasterNotFoundError

一种解决方法是尝试捕获此块;有没有办法让redis自动处理主发现?由于在代码中到处放置try-catch会使代码变得多余和混乱。

0 投票
1 回答
931 浏览

redis - Redis (redis-py) 可以处理多少个通道?

我的任务是为大量听众使用 pub/sub。这是从docs订阅的简化示例:

假设我将为一个客户订阅一个频道client-#id。每个客户一个频道。问题是:如果我有成百上千的用户,可以使用这种方法吗?我应该为一个频道订阅所有这些频道并user-#id在消息中编码以过滤接收吗?

0 投票
2 回答
652 浏览

python - 为什么 redis-py 没有地理扩展?

我通过 pip 安装了 redis-py2.10.5。它安装没有错误。但是,我无法访问与地理相关的功能。

我哪里错了?

0 投票
1 回答
1747 浏览

python - Pyspark 无法识别作为参数传递给 foreach 或 foreachPartition 的方法上的环境变量

在下面的代码中,我尝试使用 URL 上的 env 变量实例化redis-py 连接。问题是,当我使用foreach 或 foreachPartition时,#save_on_redis 方法无法识别 env 变量。

我只是尝试在外部创建 redis 连接,但收到"pickle.PicklingError: Can't pickle 'lock' object",因为 spark 尝试在所有节点上同时运行这两种方法。

问题:如何在作为参数传递给 foreach 或 foreachPartition 的方法上使用环境变量?