跳转到主要内容

具有一些功能的Redis集群

项目描述

当单点故障让你感到困惑时,Redis集群。

概述

Redis Fluster是一个非常有限的Redis池/集群实现,使得对一些常见用例的分区变得简单。

快速入门

import redis
from fluster import FlusterCluster
cluster = FlusterCluster([redis.Redis(6379), redis.Redis(6380)])

while True:
  for key in ('foo', 'bar'):
    try:
      client = cluster.get_client(key)
      client.incr(key, 1)
      client.get(key)
    except ConnectionError:
      client = cluster.get_client(key)
      client.incr(key, 1)
      client.get(key)
  time.sleep(1)

有限,怎么?我想用它做所有事!

简单来说,不要这样做。Fluster维护了一个连接到各种Redis实例的连接池,并将根据提供的分区键返回一个连接。如果一个实例失败,它将被放入惩罚箱,直到它恢复,此时它再次可用。

在任何时候都不会复制键,当节点掉线或加入时也不会重新分配。如果你正在编写INCR语句,而节点掉线了,现在你将把它们写入另一个实例。一旦原始实例返回,你将得到同一键的两个值集合。这将无缝进行,你的程序不会崩溃,所以也许这已经足够了。

那么它有什么好处呢?

缓存和短暂数据。理想情况是,掉线比重复数据更糟糕。如果一个Redis fluster节点掉线,而你有两个缓存的副本,这可能不是问题。你为数据设置了有效期,对吧?

同样,如果你正在使用列表将队列分发到多个Redis实例,那么一个实例掉线并加入并不成问题。在它掉线期间排队的项目被发送到其他地方,如果你的人工智能从所有可用实例中读取,那么什么都没有丢失,或者实际上并没有太大的不同。

Redis集群呢?

看起来很棒!遗憾的是,它非常新,还不适合生产使用。如果一切顺利,它将实现所有的承诺,这个项目可以悄悄消失。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。

源分布

fluster-0.1.1.tar.gz (21.5 kB 查看哈希值)

上传时间

构建分布

fluster-0.1.1-py2.py3-none-any.whl (32.3 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持