标签: redis-py

Redis和StrictRedis的API有什么区别?

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

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

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

python redis redis-py

2
推荐指数
1
解决办法
2373
查看次数

Redis-Py AttributeError:“int”对象没有属性“items”

我在尝试使用 Python 将数据加载到 Redis 时收到此错误。

这是代码:

 zkey = 'test'
 k = 15648
 nval = '15648-barry'
 redis.zadd(zkey, k, nval)
Run Code Online (Sandbox Code Playgroud)

这是错误:

Traceback (most recent call last):
  File "test.py", line 131, in main
    redis.zadd(zkey, k, nval)
  File "/usr/local/lib/python3.6/dist-packages/redis/client.py", line 2320, in zadd
    for pair in iteritems(mapping):
  File "/usr/local/lib/python3.6/dist-packages/redis/_compat.py", line 122, in iteritems
    return iter(x.items())
AttributeError: 'int' object has no attribute 'items'
Run Code Online (Sandbox Code Playgroud)

我在 Github 上发现了这个问题: https ://github.com/rq/rq/issues/1014

问题已解决,解决方案应该是安装 RQ 0.13 我运行:

sudo pip3 install rq
Run Code Online (Sandbox Code Playgroud)

并且安装成功。然后重新启动redis-server。

但是我仍然遇到同样的错误。

这个问题还有其他解决方案吗?

眼镜:

Python 3.6.7
RQ 0.13
Redis-Server …
Run Code Online (Sandbox Code Playgroud)

python redis redis-py

2
推荐指数
1
解决办法
6149
查看次数

Redis 排序集上的 ZREM

如果 2 个工人同时在一个有序集合的同一个元素上调用 ZREM 会发生什么?它会向实际删除元素的工作人员返回 true 并向另一个工作人员返回 false 以表明它不存在,还是会向两者都返回 true?换句话说,ZREM 在内部是原子的吗?

sortedset redis redis-py

1
推荐指数
1
解决办法
2568
查看次数

使用 Redis 与 Sentinel 和 redis-py 时如何故障转移到新的主节点?

订阅Sentinel故障转移,Channel的名称是什么,如何在订阅的函数中检测到需要刷新master?

我有一个使用 Redis Sentinel 实现高可用性和故障转移的多节点 Redis 设置。

我需要为 Redis 设置一个 Pub/Sub 来检测 Redis Master 何时发生故障并且系统何时选举了新的 Master。

_sentinel = redis.sentinel.Sentinel([(app.config["REDIS_HOSTNAME"],app.config["REDIS_SENTINEL_PORT"])])
_master = _sentinel.master_for(app.config["REDIS_SERVICE_NAME"])

def _sentinel_message_handler(message):
    #TODO how do I detect that there is a new Redis Master?

_pubsub = _master.pubsub()
_pubsub.subscribe(**{app.config["TODO"]:_sentinel_message_handler})
Run Code Online (Sandbox Code Playgroud)

python failover high-availability redis redis-py

1
推荐指数
1
解决办法
3345
查看次数

确定 Redis Pipeline 中的操作数

我一直在 Pyredis 中使用 Redis 管道(批量运行的操作集以减少单个操作的套接字 I/O 成本)。

有时我的管道变得非常大并积累了太多 RAM,因此我想在给定管道积累了 N 个操作时执行该pipeline.execute()方法来运行存储在管道中的操作。

这就提出了一个问题:如何衡量 Redis 管道中的操作数量?我知道我可以存储一个计数器变量,但更愿意只查询管道以确定其中有多少个操作。其他人就这个问题提供的任何帮助都会非常有帮助!

redis redis-py

1
推荐指数
1
解决办法
1448
查看次数

如何使用zscan逆序遍历Redis中的排序集?

我在 Redis 中有一个优先级从 0 到 3 的排序集。我想使用 python 迭代器从最高优先级到最低优先级遍历这个排序集zscan_iter。但是,使用zscan_iter给了我从 0 开始的项目。有没有办法反转顺序?不幸的是,reverse()它只适用于迭代器,不适用于 python 生成器。

我看到两个解决方案:

  1. 使用负优先级(因此使用 -3 代替 3)
  2. 使用 来对键片进行分页ZREVRANGEBYSCORE,但我更喜欢使用迭代器。

还有其他方法可以做到这一点吗?

python iterator redis redis-py

1
推荐指数
1
解决办法
1253
查看次数

使用排序集到通知系统

我正在使用redis sorted sets来保存用户通知.但由于我从未做过通知系统,我问的是我的逻辑.

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

  • POST_ID
  • post_type - A/B.
  • 可见 - Y/N.
  • 检查 - 是/否

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

ZADD users_notifications:1 10 1_A_Y_Y 
ZADD users_notifications:1 20 2_A_Y_N
....
Run Code Online (Sandbox Code Playgroud)

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

python notifications redis redis-py

0
推荐指数
1
解决办法
94
查看次数

使用 Python 在 Redis 中增加哈希字段的值

hash在 python 中创建了一个in redis,如下所示:

r.hmset('list:123', {'name': 'john', 'count': 5})
Run Code Online (Sandbox Code Playgroud)

如何增加键的计数值list:123

python redis redis-py

0
推荐指数
1
解决办法
2197
查看次数