我正在使用 redis.py 开发一个项目,当我将应用程序连接到 Redis 客户端时,我可以工作,但使用 StrictRedis 失败了。
所以,我想知道两者之间的区别,但搜索没有满意的答案。
我的项目在这里: https: //github.com/kxxoling/librorum抱歉中文注释!
我在尝试使用 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) 如果 2 个工人同时在一个有序集合的同一个元素上调用 ZREM 会发生什么?它会向实际删除元素的工作人员返回 true 并向另一个工作人员返回 false 以表明它不存在,还是会向两者都返回 true?换句话说,ZREM 在内部是原子的吗?
订阅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) 我一直在 Pyredis 中使用 Redis 管道(批量运行的操作集以减少单个操作的套接字 I/O 成本)。
有时我的管道变得非常大并积累了太多 RAM,因此我想在给定管道积累了 N 个操作时执行该pipeline.execute()方法来运行存储在管道中的操作。
这就提出了一个问题:如何衡量 Redis 管道中的操作数量?我知道我可以存储一个计数器变量,但更愿意只查询管道以确定其中有多少个操作。其他人就这个问题提供的任何帮助都会非常有帮助!
我在 Redis 中有一个优先级从 0 到 3 的排序集。我想使用 python 迭代器从最高优先级到最低优先级遍历这个排序集zscan_iter。但是,使用zscan_iter给了我从 0 开始的项目。有没有办法反转顺序?不幸的是,reverse()它只适用于迭代器,不适用于 python 生成器。
我看到两个解决方案:
ZREVRANGEBYSCORE,但我更喜欢使用迭代器。还有其他方法可以做到这一点吗?
我正在使用redis sorted sets来保存用户通知.但由于我从未做过通知系统,我问的是我的逻辑.
我需要为每个通知保存4件事.
我的问题是如何在排序集中存储这种类型的结构?
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中有更好的方法来做这种类型的东西吗?在上面的例子中,我在每个元素中保存了四个东西,我需要在服务器语言中用下划线分割.
我hash在 python 中创建了一个in redis,如下所示:
r.hmset('list:123', {'name': 'john', 'count': 5})
Run Code Online (Sandbox Code Playgroud)
如何增加键的计数值list:123?