如何处理多台试图清除redis数据库的服务器

如何处理多台试图清除redis数据库的服务器,redis,stackexchange.redis,cachemanager,Redis,Stackexchange.redis,Cachemanager,我有四台服务器连接到redis。当redis服务器出现故障时。我想清除redis数据库。问题是所有服务器都在启动清除操作。如何处理只有一台服务器触发清除并通知所有其他服务器。 我正在使用StackExchange.Redis和CacheManager.Net包作为Redis客户端库来禁用任何保存、设置appendonly no 并注释或删除任何save #save 900 1 如果您不想禁用Redis保存数据,或者更一般地说,您必须以某种方式同步通信,这并不容易,因为这是一个分布式系统 在清除

我有四台服务器连接到redis。当redis服务器出现故障时。我想清除redis数据库。问题是所有服务器都在启动清除操作。如何处理只有一台服务器触发清除并通知所有其他服务器。
我正在使用StackExchange.Redis和CacheManager.Net包作为Redis客户端库

来禁用任何保存、设置
appendonly no

并注释或删除任何
save

#save 900 1
如果您不想禁用Redis保存数据,或者更一般地说,您必须以某种方式同步通信,这并不容易,因为这是一个分布式系统

在清除缓存之前,您可以尝试使用CacheManager添加一个伪密钥。只有一个客户端能够写入密钥,如果密钥已经存在,Add方法返回
False
。也就是说,只有第一个客户机将写入“锁”,然后该客户机执行
清除

但是,只有在客户端尝试添加项时不执行刷新(因为刷新也会删除该键…)时,这才有效

要同步该操作,您可以在清除缓存之前等待几秒钟。或者,使用另一个Redis数据库实现“锁定”机制

另一种选择是使用CacheManager的背板。
清除将触发一个事件,该事件将传播到所有连接的客户端。您可以使用它来测试另一个客户端是否刚刚清除了缓存。但是,由于延迟和网络延迟,这也不是100%可靠。

为什么不配置Redis不将数据保存在磁盘上?在这种情况下,Redis将以空数据集重新启动。出于某种原因,我尝试了Redis始终保持在磁盘上。您应该禁用RDB和AOF。查看
redis.conf
了解详细信息。我尝试在配置文件中写入“appendonly no”,即使它正在写入磁盘。配置中是否有
保存
?您可能还必须删除或注释这些内容