gpt4 book ai didi

r - Redis是如何工作的?

转载 作者:IT王子 更新时间:2023-10-29 05:54:59 25 4
gpt4 key购买 nike

我一直在研究 R interface to the redis database ,以及 doRedis foreach 的并行后端.我有几个问题,以帮助我更好地应用此工具:

  1. doMC、doSMP、doSnow 等似乎都通过调用同一台计算机上的工作进程,将列表中的元素和要应用的函数传递给它们,然后收集结果来工作。在 doMC 的情况下,工作人员共享内存。但是,我对数据库如何提供相同的功能感到有点困惑。
  2. 当我向 doRedis 作业队列 ( as in this video ) 添加额外的从属计算机时,整个 doredis 数据库是否被发送到从属计算机?或者每个从属只是它在特定时刻需要的数据(即列表的一个元素和要应用的函数)。
  3. 我如何显式地将额外的数据和函数传递给 doRedis 作业队列,以便每个从属服务器都需要执行它的计算?
  4. 在使用 doRedis 和 foreach 时,是否有任何可能不适用于其他并行后端的额外“陷阱”?

我知道这有很多问题,但我一直遇到这样的情况,即我对并行处理如何工作的理解有限,这阻碍了我实现它的能力。例如,我最近尝试在大型数据库上并行化计算,结果发现自己将整个数据库传递到集群上的每个节点,这一操作完全破坏了我从并行化中获得的任何优势。

谢谢!

最佳答案

拼图的一部分是 rredis

1 - doRedis使用 rredis。具体来说,doRedis.R 使用 redis:RPush (因为它遍历 foreach 项)并且每个 redisWorker 使用 redis:BRPopredis list 中获取一些东西(你在你的 doRedis “工作”中命名)。

Redis 不仅仅是一个数据库。这里它被用作队列!

2 - 您有 1 个实例(远程)可供所有 R 工作人员访问。将 Redis 服务器视为分布式队列。您的工作主管将项目推送到列表,工作人员抓取项目并处理它并将其推送到结果列表。你可以有 m 个 worker 来处理 N 个项目。取决于你想做什么。

3 - 使用环境参数。使用 Redis:Set所有 worker 都可以访问(通过 Redis:Get )。您在 foreach 端传递一个分隔表达式,该表达式设置在 string key in redis 中 worker 可以访问。

4 - 我不知道(但这并不权威,所以请四处询问。)我还建议您阅读提供的源代码。上面的答案直接来自阅读 doRedis.RredisWorker.R

希望这对您有所帮助。

[附注远程登录到您的 redis 并发出 Redis:monitor命令来回监视喋喋不休。]

关于r - Redis是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5765326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com