Spymemcached не предоставляет пул соединений, поэтому каждый раз, когда я создаю MemcachedClient
экземпляр, я создаю новое подключение, верно?
Да, каждый раз, когда вы создаете новый объект MemcachedClient, вы создаете новое соединение. Каждое соединение выглядит асинхронным для приложения, поэтому даже одного подключения, вероятно, будет достаточно для вашего приложения. Однако некоторые люди создают пул подключений MemcachedClients.
Тогда когда я должен закрыть соединение?
Вы закрываете соединения, как только вам больше не нужно общаться с memcached. Если ваше приложение недолговечно, вам необходимо отключить соединение, чтобы jvm прекратил работу, поскольку соединения MemcachedClient по умолчанию являются демоническими.
Должен ли я предоставлять один и тот же экземпляр всем потокам в моем приложении или каждый раз создавать новый?
Использовать одно и то же соединение с несколькими потоками. Создание нового соединения для каждого вызова приведет к значительному падению производительности из-за накладных расходов при создании соединения TCP.
xmemcached имеет пул соединений. В этом случае я должен закрыть соединения, которые я получаю из пула?
Я не знаком с xmemcached, но я думаю, что вы захотите создать только несколько (16, может быть) потоков и поделиться ими с потоками вашего приложения для лучшей производительности.