20

Say we have a connection to memcache or redis... which style is preferred and why?

MEMCACHE = Memcache.new(...)
REDIS = Redis.new(...)

OR

$memcache = Memcache.new(...)
$redis = Redis.new(...)
4

3 回答 3

45

您可能想在此处Redis.current使用更多信息

例如,在初始化程序中:

Redis.current = Redis.new(host: 'localhost', port: 6379)

然后在您的其他课程中:

def stars
  redis.smembers("stars")
end

private

def redis
  Redis.current
end
于 2013-05-10T03:23:09.140 回答
9

它们不是等效的构造。根据您的应用程序,它们可能可以互换,也可能不能互换,但它们在语义上是不同的。

# MEMCACHE is a constant, subject to scoping constraints.
MEMCACHE = Memcache.new(...)

# $memcache is a global variable: declare it anywhere; use it anywhere.
$memcache = Memcache.new(...)
于 2012-06-05T16:19:58.927 回答
4

IMO 是一个“常数”,因为它表明它应该是……常数。

全局变量并不意味着它们不应该被突变。

于 2012-06-05T16:17:46.913 回答