我正在通過Jetty/CometD運行長時間運行的Web服務,並且我正在使用Redisson庫連接到redis。我正在使用Singleton模式來獲取我的RedissonClient /連接,我不確定這是否是最好的方法。Singleton模式是RedissonClient的一個很好的用例嗎?
類看起來是這樣的:
public class RedisClient {
// singleton instance of our RedisonClient/connection
private static RedissonClient _redissonInstance;
public static String REDIS_HOST = "my.redishost.com:6379";
private static RedissonClient setupRedis() {
org.redisson.Config config = new org.redisson.Config();
config.useSingleServer()
.setAddress(REDIS_HOST)
.setConnectionPoolSize(200);
return Redisson.create(config);
}
public static RedissonClient getRedis() {
if (_redissonInstance == null) {
_redissonInstance = setupRedis();
}
return _redissonInstance;
}
public static void setRedisHost(String redisHost) {
_logger.warn("Setting REDIS_HOST to: " + redisHost);
REDIS_HOST = redisHost;
}
}
我不能想到任何使用情況下,辛格爾頓將是一個好主意。 – duffymo
爲什麼單身人士在Java中不是個好主意?似乎我閱讀的越多,看起來越不推薦(仍然在學習Java btw) – giantNinja
他們在任何語言中都是個壞主意。這就是爲什麼他們不被推薦。 Google已經編寫了一些工具來檢測它們是否被淘汰:http://googlecode.blogspot.com/2007/07/google-singleton-detector-released.html – duffymo