캐시 연결
성공적으로 구성한 후 NCache, 다음을 활용하여 애플리케이션 개발을 시작할 수 있습니다. NCache 임베딩하여 NCache API 호출. 그러기 위해서는 캐시 연결을 보장해야 합니다. 단일 애플리케이션에는 단일 캐시와 다중 캐시를 연결할 수 있습니다. 또한 캐시는 보안 자격 증명으로 연결될 수 있습니다.
주의 사항
이 기능은 다음에서도 사용할 수 있습니다. NCache Professional.
캐시 연결을 위한 전제 조건
- 모든 작업에 필요한 표준 전제 조건에 대해 알아보려면 NCache 캐시 연결을 포함한 클라이언트 측 기능은 다음 페이지를 참조하십시오. 클라이언트 측 API 전제 조건.
- API 세부 정보는 다음을 참조하세요. 아이캐시, 캐시매니저, 캐시 가져오기, 캐시 연결 옵션.
단일 캐시에 연결
NCache 제공 ICache
인스턴스를 얻기 위한 인터페이스 NCache의 캐시입니다. 더욱이, CacheManager
클래스를 통해 캐시 인스턴스에 연결할 수 있습니다. GetCache
방법.
다음 예에서는 실행 상태에 있는 DemoCache라는 캐시에 연결합니다.
// Specify the cache name
string cacheName = "demoCache";
// Connect to cache
ICache cache = CacheManager.GetCache(cacheName);
주의 사항
작업이 안전하도록 하려면 에 설명된 대로 응용 프로그램 내에서 잠재적인 예외를 처리하는 것이 좋습니다. 처리 실패.
여러 캐시에 연결
사용법 - GetCache
방법을 사용하면 단일 애플리케이션 내에서 여러 캐시에 연결할 수 있습니다. 이렇게 하면 하나의 응용 프로그램을 사용하여 여러 캐시의 데이터를 관리하는 데 도움이 됩니다.
다음 예에서는 동일한 클라이언트의 두 캐시, decoCache 및 decoClusteredCache에 연결합니다.
// Specify cache names
string cacheName1 = "demoCache";
string cacheName2 = "demoClusteredCache";
// Connect to the caches
ICache cache1 = CacheManager.GetCache(cacheName1);
ICache cache2 = CacheManager.GetCache(cacheName2);
CacheConnectionOptions를 사용하여 캐시에 연결
CacheConnectionOptions
캐시에 대한 연결을 설정하는 동안 캐시 속성 값을 지정할 수 있습니다. 이 값은 다음을 통해 구성할 수 있는 것과 동일합니다. 클라이언트.ncconf 파일.
주의 사항
통해 지정된 모든 구성 CacheConnectionOptions
의 값을 재정의합니다. 클라이언트.ncconf 그 특정 클라이언트를 위해.
이 예에서는 RetryInterval
, ConnectionRetries
, EnableKeepAlive
및 KeepAliveInterval
속성은 변경될 수 있습니다. 이 애플리케이션의 경우 클라이언트 구성 파일에 지정된 값 대신 이러한 값이 사용됩니다.
// Create new CacheConnectionOptions instance
var options = new CacheConnectionOptions();
// Specify the cache connection options to be set
options.RetryInterval = TimeSpan.FromSeconds(5);
options.ConnectionRetries = 2;
options.EnableKeepAlive = true;
options.KeepAliveInterval = TimeSpan.FromSeconds(30);
// Specify the cache name
string cacheName = "demoCache";
// Connect to cache with CacheConnectionOptions
ICache cache = CacheManager.GetCache(cacheName, options);
로드 밸런서용 CacheConnectionOptions를 사용하여 캐시에 연결
종종 애플리케이션 배포에서는 로드 밸런서를 사용하여 서버의 요청이 너무 많은 것을 방지합니다. 즉, 클라이언트가 서버에 직접 액세스하는 것을 방지합니다. 이러한 상황에서 클러스터가 모든 서버에 연결되도록 하려면 다음을 수행하십시오. NCache 를 제공합니다 IsLoadBalancer
API는 아래와 같습니다.
CacheConnectionOptions cacheConnectionOptions = new CacheConnectionOptions();
cacheConnectionOptions.ServerList = new List<ServerInfo>()
{
new ServerInfo("20.200.20.40", 9800, true)
};
ICache cache = CacheManager.GetCache("demoCache", cacheConnectionOptions);
주의 사항
방법에 대해 자세히 알아보기 NCache 이러한 로드 밸런서를 다룹니다. 여기에서 지금 확인해 보세요..
클러스터 및 클라이언트 캐시에 연결
주의 사항
사용법 - GetCache
단일 호출로 클러스터링 및 클라이언트 캐시에 연결하는 방법은 권장되는 접근 방식이 아닙니다.
다음을 사용하여 단일 호출로 클러스터링 및 클라이언트 캐시에 연결할 수 있습니다. GetCache
방법. 이렇게 하면 단일 애플리케이션 내에서 두 캐시가 모두 초기화되므로 하나의 애플리케이션을 통해 여러 캐시의 데이터를 관리하는 데 도움이 됩니다.
주의 사항
로컬 캐시가 클라이언트 캐시에 연결된 경우 직렬화는 클러스터 캐시의 직렬화와 동일해야 합니다. 두 캐시 모두 이전에 구성되어야 하며 실행 중 상태여야 합니다.
다음 예에서는 다음을 사용하여 두 개의 캐시에 연결합니다. GetCache
방법.
// Specify the cache names
string clusteredCache = "demoCache";
string clientCache = "myClientCache";
CacheConnectionOptions cacheConnectionOptions = new CacheConnectionOptions();
cacheConnectionOptions.LoadBalance = true;
cacheConnectionOptions.ConnectionRetries = 5;
CacheConnectionOptions clientCacheConnectionOptions = new CacheConnectionOptions();
clientCacheConnectionOptions.LoadBalance = true;
clientCacheConnectionOptions.ConnectionRetries = 5;
clientCacheConnectionOptions.Mode = IsolationLevel.OutProc;
// Connect to the caches in a single call
// CacheConnectionOptions which can be null if not required
ICache cache = CacheManager.GetCache(clusteredCache, cacheConnectionOptions, clientCache, clientCacheConnectionOptions);
보안 자격 증명으로 캐시에 연결
보안이 활성화된 경우 승인된 사용자가 작업을 수행할 수 있도록 캐시에 연결하는 동안 보안 자격 증명을 제공해야 합니다. 보안 사용에 대한 자세한 내용은 NCache참조 NCache 보안.
// Specify cache name and user credentials
string cacheName = "demoCache";
string userId = "userid";
string password = "mypassword";
// Initialize the CacheConnectionOptions
var options = new CacheConnectionOptions();
// Enter the credentials
options.UserCredentials = new Credentials(userId, password);
// Connect to the cache using the security credentials
ICache cache = CacheManager.GetCache(cacheName, options);
문제해결
포트에 접근할 수 없습니다
방화벽 구성으로 인해 클라이언트가 캐시에 연결하지 못하는 경우도 있습니다.
해결 방법
우리의 세부 사항을 사용하십시오 시작 안내서 방화벽 설정을 변경하려면
client.ncconf를 찾을 수 없습니다.
때로는 클라이언트가 해당 항목을 찾지 못할 수도 있습니다. 클라이언트.ncconf 캐시에 연결하는 동안 파일. 이런 경우가 발생합니다. NCache 디렉토리 (%NCHOME%
)이 설정되지 않았습니다.
해결 방법
If %NCHOME%
설정되지 않은 경우 아래 단계에 따라 환경 변수를 설정하세요.
- 마우스 오른쪽 버튼으로 스타트 버튼을 선택합니다 .
- 오른쪽 창에서를 클릭하십시오. 고급 시스템 설정.
- . 시스템 속성 창으로 이동 Advnaced 탭을 클릭하고 환경 변수 버튼을 클릭합니다.
- . 환경 변수 창, 아래 시스템 변수, 클릭 신제품.
- 럭셔리 변수 이름 입력
%NCHOME%
. - 럭셔리 변수 값 입력
C:\Program Files\NCache
. - OK.
- 이제 동일한 시스템 경로를 업데이트하려면 환경 변수 창, 찾기 경로 변수를 클릭하고 편집.
- . 환경 변수 편집 창을 클릭합니다 신제품 그리고 추가
%NCHOME%\bin
목록에. 이렇게 하면 도구를 전 세계적으로 사용할 수 있습니다. - OK 각 창을 닫습니다.
요청을 처리하는 데 사용할 수 있는 서버가 없습니다.
클라이언트/서버 포트가 방화벽에 의해 차단되어 클라이언트가 캐시에 연결하지 못하는 경우도 있습니다.
해결 방법
클라이언트/서버 포트( NCache 서비스가 시작되고 다른 클라이언트 연결을 허용함)가 방화벽에 의해 차단되지 않습니다. 이 포트의 기본값은 '9800'입니다. 기본값을 다음에서 변경할 수 있습니다. Alachisoft.NCache.서비스.exe.config or Alachisoft.NCache.Service.dll.config 파일.
서버 노드와 통신할 수 없습니다.
클러스터 포트가 방화벽에 의해 차단되어 클러스터 노드가 서로 통신하지 못할 수도 있습니다.
Error: "Unable to communicate with server node"
해결 방법
방화벽이 클라이언트/서버 및 클러스터 포트를 허용하는지 확인하십시오. 클러스터 포트는 클러스터의 노드가 통신하는 포트입니다. 이러한 포트의 기본값은 다음에서 변경할 수 있습니다. NCache 관리 센터. 포트 범위를 지정한 경우 NCache 관리 센터에서 범위 내 모든 포트의 차단을 해제하세요.
클라이언트 소켓 교착 상태
캐시 서버의 응답을 오래 기다리기 때문에 클라이언트 소켓에서 교착 상태가 발생할 수 있습니다. 이로 인해 성능 문제를 일으킬 수 있는 많은 대기 스레드가 발생할 수도 있습니다.
해결 방법
1단계: 서버 측 변경 사항
서비스 구성 파일로 이동합니다.
- 윈도우 .NET 4.8: Alachisoft.NCache.서비스.exe.config 에 위치한 %NCHOME%\bin\서비스
- 윈도우 .NET: Alachisoft.NCache.Service.dll.config 에 위치한 %NCHOME%\bin\서비스
- 리눅스 .NET: Alachisoft.NCache.Daemon.dll.config 에 위치한 /고르다/ncache/bin/서비스
- 윈도우 자바: Alachisoft.NCache.Service.dll.config 에 위치한 %NCHOME%\bin\서비스
- 리눅스 자바: Alachisoft.NCache.Daemon.dll.config 에 위치한 /고르다/ncache/bin/서비스
구성 파일에 다음 줄을 추가합니다.
<add key ="NCacheServer.EnableBadClientDetection" value = "true" />
"true" 값은 클라이언트 소켓에서 BadClientDetection이 활성화되었음을 나타냅니다. 즉, 이제 클라이언트 소켓에서 교착 상태가 발생하면 소켓이 재설정됩니다. 이 속성의 기본값은 "거짓"입니다.
<add key ="NCacheServer.ClientSocketSendTimeout" value = "10" />
활성화했을 때 BadClientDetection
, 교착 상태의 경우 소켓이 재설정되는 시간 간격을 지정할 수 있습니다. 이 속성의 기본값은 "10"이며 이 값은 1보다 작을 수 없습니다.
몇 가지 다른 속성도 도입되었습니다. Alachisoft.NCache.서비스.exe.config 이 문제에 도움이 됩니다. 이러한 속성을 다음과 같이 구성하십시오.
<add key ="NCacheServer.EventPriorityRatio" value="30"/>
서버 측에서는 이벤트 및 캐시 작업에 우선 순위 대기열이 사용됩니다. 라는 속성을 통해 이 대기열에 대한 이벤트 및 캐시 작업의 비율을 구성할 수 있습니다. EventPriorityRatio
. 이 속성의 기본값은 30이며 이는 이벤트 및 캐시 작업의 비율이 30:70임을 나타냅니다. 이 속성의 값은 1보다 작을 수 없습니다.
<add key ="NCacheServer.EventBulkCount" value="50"/>
이제 캐시 서버가 이벤트를 클라이언트에 대량으로 보냅니다. 이 속성을 통해 대량으로 보낼 항목 수를 설정할 수 있습니다. 기본적으로 이 값은 50이고 값은 1보다 작을 수 없습니다. 이는 클라이언트 버전 4124 이상에서 사용할 수 있습니다.
<add key ="NCacheServer.EventBulkCollectionInterval" value="2"/>
이 속성은 대량 이벤트 수가 최대 개수에 도달하지 못한 경우에도 대량 이벤트가 실행되는 시간 간격(초)을 설정하는 데 사용됩니다. EventBulkCount
사용자가 지정한 것입니다. 이 속성의 기본값은 2초이며 값은 1보다 작을 수 없습니다.
다시 시작하십시오. NCache 이러한 변경 사항이 적용되도록 서비스를 제공합니다.
2단계: 클라이언트 측 변경 사항
귀하의 앱 구성/웹.구성 파일 :
<configuration>
<appSettings>
<add key ="NCacheClient.AsynchronousEventNotification" value="true"/>
<add key ="NCacheClient.NumberofEventProccesingThreads" value="2"/>
</appSettings>
</configuration>
AsynchronousEventNotification
: 이벤트가 클라이언트 측에서 비동기식으로 실행될지 아니면 동기적으로 실행될지 지정합니다. 기본값은 이벤트가 비동기적으로 실행됨을 나타내는 "true"입니다. "false" 값은 이벤트가 클라이언트 측에서 동기적으로 실행됨을 의미합니다.
NumberofEventProcessingThreads
: 사용자가 이벤트가 동기적으로 실행되도록 구성한 경우 이 플래그는 클라이언트 측에서 이러한 이벤트를 처리할 스레드 수를 지정하는 데 사용됩니다. 값이 너무 크면 성능 문제가 발생할 수 있습니다.
도 참조
.그물: Alachisoft.NCache.고객 네임 스페이스.
자바 : COM.alachisoft.ncache.고객 네임 스페이스.
Node.js : 캐시 클래스입니다.
파이썬 : ncache.고객 클래스입니다.