Redis支持的Python数据结构
蟒蛇(59), redis(6个)我一直在和Redis公司相当多工作中最近,我真的习惯了。在某个时刻,我突然想到,使用Redis作为最常见的Python数据结构、列表和字典的后端非常简单。这样做不仅简单,而且还提供了一些好处:可读性、跨进程/线程/机器的分布以及对现有接口的熟悉。
这些想法产生的代码可以在Github上找到。在您离开之前,让我们考虑一下这种方法的几个简单但功能强大的应用程序:共享配置机制和旧的publisher-consumer示例。
共享配置
一旦开始大规模工作,管理共享配置数据就变得越来越重要。幸运的是,这是一个可以解决的问题。这里有一个解决方案。
进口再贴现#创建和编辑配置十=再贴现.重新定义()十['mysql主机']="127.0.0.0:1999"十['mysql从属']="127.0.0.1:2000,127.0.0.2:2001"十['mysql从属']=十['mysql从属']+",127.0.0.3:2002"
#读取计算机上的配置十=再贴现.重新定义()主人=十['mysql主机'].分裂(':')奴隶=[y.分裂(':')对于y在里面十['mysql从属'].分裂(',')]
很简单。长时间运行的进程需要偶尔进行检入,以查看配置是否发生了更改,这是一种拖累,但是可行的。
分布式生产者和消费者
在某种程度上,大多数体系结构都迫切需要消息队列。他们中的许多人最终在MySQL之上实现了一个奇怪的队列。许多其他人最终使用兔子MQ但这并不总是完全符合它的座右铭信息就是这样。让我们研究另一种方法。
进口redis\u列表#制作人进口随机的十=redis\u列表.再贴现(“生产者队列”)对于我在里面润智(0,100):十.追加(随机的.兰丁(0,101)
#消费者十=redis\u列表.再贴现(“生产者队列”)虽然是的:n=十.流行音乐(舞台调度=是的)打印“砰的一声%s码"%(n,)
可能会有大量的生产者和消费者,他们不需要在同一台机器上。您不必使用Python线程或多处理,只需从命令行生成任意数量的线程即可。可爱,嗯?
一个配置良好的Redis安装程序可以在主设备发生故障时使用对从设备的写故障转移,从而允许系统在不丢失数据和不等待恢复主设备的情况下保持功能;这些属性很难用RabbitMQ复制。对于更雄心勃勃的人来说,通过限制队列的最大大小(通过Redis)来确保队列的稳定性是很简单的LTRIM公司
命令)。最雄心勃勃的人,可以追随红隼-像策略和监视队列大小一样,当队列太大时从队列中拉出消息,将它们写入文件,然后在队列恢复时从队列中重新填充队列(这可以在不丢失消息顺序的情况下完成,方法是使用两个Redis列表,其中对象从输入队列移动到序列化文件或处理队列,如果处理队列低于其最小大小,并且当磁盘上还有数据时,没有任何内容直接从输入队列写入处理队列)。
好 啊。去造点东西。