问题标签 [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 回答
6350 浏览

python - How many commands could redis-py pipeline have?

I want to use pipeline to reduce the number of interaction between my program and redis-server.
I may set many commands in pipeline but I couldn't find any document describing the max number of commands that could be set in pipeline.

Is there any advice? Thanks in advance.

0 投票
1 回答
1319 浏览

python - 在使用 Redis pub/sub 的 Python 服务中调试内存泄漏

我正在尝试使用 Redis 发布/订阅功能构建 Python 2.7 服务。我在 Ubuntu 12.04 上使用 redis 2.8.17 和 redis-py 2.10.3 作为客户端。不幸的是,我的服务似乎正在泄漏内存。内存消耗似乎随着服务接收/消耗/处理的消息量线性增加。

我尝试使用工具memory_profiler通过装饰我的主订阅循环来调试它。为了让它连续打印输出,我将其更改为每收到一百条消息就退出。输出如下所示:

它报告每推送到服务的一百条消息都有类似的增长。回调是实际执行应用程序的函数,所以如果我的应用程序代码有问题,我实际上希望在第 65 行增加内存。

输出让我怀疑是 redis 客户端,所以我还使用 pymler.asizeof 检查了 self.redis_pubsub 和 redis.StrictRedis 对象的大小。这些对象一开始很小,并且在服务接收消息时根本不会增加。

此外,当尝试使用 pympler.muppy 和 pympler.summarize 查找泄漏对象时,它不会报告任何增长的对象计数或累积的内存。此外,内存消耗和增长的总数与 Linux 中 top 提供的数字不同。

我被卡住了,有没有人知道可能发生了什么,或者对如何进一步调试有任何想法?

0 投票
1 回答
695 浏览

python - redis-py管道hset不保存

pipeline在 redis-py 上设置了一个来保存 2 个不同的哈希值

执行前的管道是:

答案是:

所以看起来它正在保存16个键。

执行self.app.redis.keys('*')时它不带任何键也不执行时self.app.redis.hget('article/1')

有什么我想念的吗?

0 投票
1 回答
658 浏览

python - Redis:在不存储中间集的情况下查找 SINTER 结果的 SCARD

我需要redis中2个大集合的交集的长度(SCARD)。

所以这实现了我想要的:

但是集合很大,所以我不想存储中间值。从概念上讲,我想要:

有没有办法在一个命令中实现这一点,也许是 Lua 脚本?还是我最好用我的应用程序语言编写脚本并在完成后删除中间值?例如使用 python 和 redis-py:

0 投票
1 回答
1396 浏览

python - Redis 和 StrictRedis 的 API 有什么区别?

我正在使用 redis.py 开发一个项目,当我将应用程序连接到 Redis 客户端时工作,但使用 StrictRedis 失败。

所以,我想知道两者之间的区别,但没有得到满意的答案。

我的项目在这里:https ://github.com/kxxoling/librorum中文注释抱歉!

0 投票
0 回答
573 浏览

python - 使用 redis-py 进行客户端负载均衡

我在 ElastiCache 上有一个带有 1 个主设备和 2 个从设备的 redis 设置。主故障转移已处理,但我想确保:

  • 读取在三台服务器之间进行负载平衡
  • 只写给主人
  • 如果读取失败,我们会在另一个节点上重试

我很难用 redis-py 做到这一点:

1)它支持连接池(并建议我们可以通过这种方式支持客户端分片)但文档没有指定它是否会重试错误。

2)它没有提供明确的方法来指定一种类型的连接是否用于读取而另一种用于写入......我想我可以创建两个 StrictRedis 实例?

有关处理此问题的最佳方法的任何想法?看起来有一些项目正在解决这个问题,但在过去的两年里,它们都没有提交过:

0 投票
1 回答
151 浏览

python - 使用排序集到通知系统

我正在使用 redissorted sets来保存用户通知。但由于我从未做过通知系统,所以我在问我的逻辑。

我需要为每个通知保存 4 件事。

  • post_id
  • post_type - A/B
  • 可见 - 是/否
  • 已检查 - 是/否

我的问题是如何将这种类型的结构存储在排序集中?

有更好的方法在 redis 中做这种事情吗?在上面的例子中,我在每个元素中保存了四个东西,我需要用服务器语言中的下划线来分割。

0 投票
1 回答
961 浏览

python-3.x - 在 redis-py 中,redis.StrictRedis.pipe 线程安全吗?

简短的问题。
我正在使用 redis-py 在我的 redis 服务器上设置一些键,但我遇到了一些奇怪的行为。
我怀疑它与 StrictRedis.pipe 有关。我有多个线程将命令推送到同一个管道,过了一会儿我在这个管道上运行执行并运行它的所有命令。我想知道管道是否是线程安全的?我可以在没有任何同步机制的情况下从多个线程推送命令吗?

谢谢你。

0 投票
0 回答
364 浏览

python - 在 python 的信号处理程序中唤醒阻塞的 redis 调用

我需要通过信号处理(在本例中为 SIGUSR1)唤醒列表中的阻塞弹出(redis 客户端)

这是示例代码:

此代码的输出是

并停止

其他信息:

  • 处理程序内部 push 的结果是 1 (这应该意味着一个元素实际上已经插入到列表中)
  • 如果我打开一个并行的 redis-cli shell,即使在信号处理之后,也不会显示带有“LRANGE”的元素
  • redis-cli 命令“CLIENT LIST”显示 blpop 客户端

怎么了?提前致谢


更新

如果我复制推送,则有效:

redis 队列中似乎没有其他消息最后出现。看起来第一次推动消失了......

0 投票
1 回答
988 浏览

data-structures - 将 set 存储为 redis 中的哈希值

我有由数千行组成的文件(每行包含 3 个字段,首先是 ak 长度字符串,然后是一个数字,第三个是另一个字符串)的形式:-

我使用 redis-py 加载它,使用:-

形成一个映射

我打算通过删除 k 的重复信息(这是前 3 条记录常见的 ak 长度字符串)来存储表单的值:

我的想法是将集合的值存储在不同的键下,该键可以作为散列中 k 的值。还有比这更好的方法吗?