我想将多线程Puma用作生产服务器,因此我的代码应该是线程安全的。 我读到全局变量的使用不是线程安全的。在这种情况下,全局变量的替代方法是什么? 我将全局变量(没有值更改)用作设置/获取等的Redis键。
#initializers/redis.rb
$DRIVER_LOCATIONS = "driver_locations"
和代码中
REDIS.with do |conn|
conn.geoadd($DRIVER_LOCATIONS, latitude, longitude, id)
end
还是不需要更改某些内容?
答案 0 :(得分:0)
如评论中所述,您可能应该在其中使用常量而不是全局变量
#initializers/redis.rb
DRIVER_LOCATIONS = "driver_locations"
# ...
REDIS.with do |conn|
conn.geoadd(DRIVER_LOCATIONS, latitude, longitude, id)
end
使用全局变量在您的用例中应该不会很糟糕,因为它是在初始化期间设置的,我假设它只做一次。