问题标签 [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.
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
python - Redis - 解析远程服务器提供的数据流
我已经在本地设置了 Redis,我想连接到远程服务器,该服务器以 <ID,值> 的形式提供合成数据流。到目前为止,我已经设法使用套接字连接到上面提到的服务器,读取数据流并打印它。相反,我想将这些对存储在哈希数据结构中(稍后我将存储有关每个 ID 的更多信息)。问题是我不知道如何解析数据流以便使用hget
以及如何连续使用它。在更高级别,我希望能够将传入数据流中的名称和值作为参数传递给hget
. 忘了提我正在使用 Python API。至今:
数据流示例:
我不确定是否可以保证所有行都已完全格式化,但让我们保证。
python - redis-py 模块是否可以在集群模式下与 Redis 一起使用?
我正在尝试在集群模式下将redis-py与 redis 一起使用,但我无法让它工作。我看到redis-py-cluster可以工作,但我喜欢 redis-py,因为我一直在使用它,它是推荐的客户端。
redis - 从不断变化的 Redis 键集合中查找值冲突
在我的网站中,允许用户保留相同的用户名。此外,在用户登录的任何时间点,我都会将他们的用户名临时保存在ttl
10 分钟的 redis 密钥中。
问题是:有没有办法——使用 Redis——在过去 10 分钟内在线查找所有用户 ID,共享相同的用户名?
目前,我正在提取所有键的值并在 Python 中查找冲突——这并没有真正的帮助,因为我需要在运行时多次执行此操作(并且有很多用户流量)。
我假设我可以创建具有唯一用户名作为键的集合,并将所有用户 ID 存储在集合中,以便让我 O(1) 查找共享相同用户名的用户。但是,我不得不牺牲 10 分钟的 ttl 条件(我需要为每个用户名单独设置)。
顺便说一句,这里是 Redis/Lua 初学者,因此是菜鸟问题(如果是的话)。
python - NameError:名称'redis'未定义 - PySpark - Redis
我正在使用addPyFile
pyspark 中的方法来加载redis.zip
文件。我可以使用加载文件
但是在使用 运行代码时./pyspark
,它显示错误:
NameError:名称'redis'未定义
zip( redis.zip
) 包含.py
文件(client.py
、connection.py
、exceptions.py
、lock.py
等utils.py
)。
Python 版本是 - 3.5,火花是 2.7
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 位
python - 哨兵自动发现master
redis master 可以通过 sentinel 使用:
现在将数据写入主节点:
现在, while # do something
,如果master_server
崩溃,sentinel
将通过投票将一个奴隶提升为主人。因此,master_server.setex(key, 120, new_value)
将抛出MasterNotFoundError。
一种解决方法是尝试捕获此块;有没有办法让redis自动处理主发现?由于在代码中到处放置try-catch会使代码变得多余和混乱。
redis - Redis (redis-py) 可以处理多少个通道?
我的任务是为大量听众使用 pub/sub。这是从docs订阅的简化示例:
假设我将为一个客户订阅一个频道client-#id
。每个客户一个频道。问题是:如果我有成百上千的用户,可以使用这种方法吗?我应该为一个频道订阅所有这些频道并user-#id
在消息中编码以过滤接收吗?
python - 为什么 redis-py 没有地理扩展?
我通过 pip 安装了 redis-py2.10.5。它安装没有错误。但是,我无法访问与地理相关的功能。
我哪里错了?
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 的方法上使用环境变量?