---
sourceDocument: 호주 API 참조
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ko-KR/api-reference

 Release :

    - australia

ft:locale :

    - ko-KR

ft:publication_title :

    - 호주 API 참조

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# ScopedCacheManager - 범위 지정됨

# ScopedCacheManager - 범위 지정됨 {#ariaid-title1}

* 릴리스 버전: Australia
* 
* 업데이트 날짜 2026년 03월 12일
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 소요 시간: 14분

ScopedCacheManager API는 범위가 지정된 애플리케이션에 대한 캐시 데이터를 검색, 설정 및 플러시하는 메서드를 제공합니다.

이 API에는 범위 지정 캐시(com.glide.scopedcache) 플러그인이 필요하며 `sn_scoped_cache` 네임스페이스에서 실행됩니다. 플러그인은 기본적으로 설치되고 활성화됩니다.

이러한 메서드를 사용하려면 하나 이상의 범위가 지정된 캐시와 범위가 지정된 캐시 쌍을 정의해야 합니다. 범위가 지정된 캐시를 만드는 방법에 대한 자세한 내용은 [ScopedCacheManager API 개발자 안내서](https://servicenow-prod.fluidtopics.net/GHfn~pLOXDQq~tzI8l_OMw#scoped-caches "범위가 지정된 캐시를 사용하면 고객이 빠른 액세스를 위해 사용자 지정 데이터를 메모리에 저장하고 무효화되는 시기를 정의할 수 있습니다. 이는 여러 테이블에 걸친 쿼리 결과와 같이 처음부터 데이터를 가져오는 데 시간이 더 오래 걸릴 때 유용합니다. ScopedCacheManager API를 사용하여 범위가 지정된 애플리케이션에 대한 캐시 데이터를 검색, 설정 및 플러시합니다.")를 참조하세요.  
범위가 지정된 캐시와 함께 이 API를 사용하면 다음과 같은 몇 가지 이점이 있습니다.

* 트랜잭션 간에 메모리에 상주하는 범위가 지정된 애플리케이션에서 문자열 캐싱.
* 범위가 지정된 애플리케이션 데이터를 메모리에 캐싱하고 기본 테이블의 변경 사항에 따라 이 데이터를 플러시합니다.
* 트랜잭션 수명주기 외부에서 캐시 데이터를 정의하고 사용합니다.
* 나중에 빠른 액세스를 위해 비용이 많이 드는 작업 또는 계산의 출력을 캐싱합니다.
{#ScopedCacheManagerAPI__ul_kjm_gnl_w5b}

## ScopedCacheManager -- flushScopedCache(문자열 카탈로그, 문자열 키) {#ariaid-title2}

전체 캐시 또는 캐시에서 단일 항목을 플러시합니다.
{#ScpdCchMgr-flushScopedCache_S_S__table_yxh_w35_4tb__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 카탈로그 | 문자열 | 범위 지정 캐시 \[sys_scoped_cache\] 테이블에 정의된 캐시의 이름입니다. |
| 키 | 문자열 | 옵션입니다. 캐시 키입니다. 캐시에서 단일 항목을 플러시하려면 이 매개변수를 설정합니다. |
[표 1. 매개변수]

{#ScpdCchMgr-flushScopedCache_S_S__table_yxh_w35_4tb} {#ScpdCchMgr-flushScopedCache_S_S__table_zxh_w35_4tb__entry__2}

| 유형 | 설명 |
|-|-|
| 없음 |   |
[표 2. 반환]

{#ScpdCchMgr-flushScopedCache_S_S__table_zxh_w35_4tb}  
다음 예제는 myCache라는 캐시에서 "abc" 키를 플러시하는 방법을 보여줍니다. 전체 캐시를 플러시하려면 키 매개변수를 생략하십시오.

    sn_scoped_cache.ScopedCacheManager.flushScopedCache("myCache", "abc");

## ScopedCacheManager -- get(String catalog, String key) {#ariaid-title3}

캐시에서 값을 가져옵니다.
{#ScpdCchMgr-get_S_S__table_b5d_z35_4tb__entry__3}{#ScpdCchMgr-get_S_S__sCachedMgrAPI-ph-entry-key}

| 이름 | 유형 | 설명 |
|-|-|-|
| 카탈로그 | 문자열 | 범위 지정 캐시 \[sys_scoped_cache\] 테이블에 정의된 캐시의 이름입니다. |
| 키 | 문자열 | 캐시 키입니다. |
[표 3. 매개변수]

{#ScpdCchMgr-get_S_S__table_b5d_z35_4tb} {#ScpdCchMgr-get_S_S__table_c5d_z35_4tb__entry__2}

| 유형 | 설명 |
|-|-|
| 문자열 | 캐시 항목입니다. |
[표 4. 반환]

{#ScpdCchMgr-get_S_S__table_c5d_z35_4tb}  
다음 예는 키(50)보다 큰 문자 수로 짧은 설명이 있는 인시던트 기록의 수를 계산하는 방법을 보여줍니다. 이 경우 50자를 초과하는 짧은 설명이 있는 6개의 인시던트 기록이 있습니다. 이 값은 캐시에 재사용 가능한 문자열로 저장되므로 값을 검색할 때마다 계산할 필요가 없습니다.

    var cache2 = "Cache 2"; // column pair type

    // Re-populate the column cache
    for (var i = 0; i < 100; i+=10) {
        var inc = new GlideRecord('incident');
        inc.query();
        var counter = 0;
        while (inc.next()) {
            if (inc.getValue('short_description').length > i)
            counter++;
        }
        sn_scoped_cache.ScopedCacheManager.put(cache2, i.toString(), counter.toString());
    }

    // script to get values from column cache
    gs.info(sn_scoped_cache.ScopedCacheManager.get(cache2, "50"));

출력:

    scoped_app: 6

## ScopedCacheManager -- getCacheEntryDetails(문자열 카탈로그, 문자열 키) {#ariaid-title4}

바이트 크기, 객체 유형 및 항목 값을 포함한 캐시 항목 상세 정보를 가져옵니다.
{#ScpdCchMgr-getCacheEntryDetails_S_S__table_b5d_z35_4tb__entry__3}{#ScpdCchMgr-getCacheEntryDetails_S_S__sCachedMgrAPI-ph-entry-key}

| 이름 | 유형 | 설명 |
|-|-|-|
| 카탈로그 | 문자열 | 범위 지정 캐시 \[sys_scoped_cache\] 테이블에 정의된 캐시의 이름입니다. 카탈로그 이름에는 범위 이름과 캐럿 문자가 프리픽스로 지정되어야 합니다. 예를 들어 전역 범위의 "test_cache"에는 `"global^test_cache"` 프리픽스가 붙습니다. |
| 키 | 문자열 | 캐시 키입니다. |
[표 5. 매개변수]

{#ScpdCchMgr-getCacheEntryDetails_S_S__table_b5d_z35_4tb} {#ScpdCchMgr-getCacheEntryDetails_S_S__table_c5d_z35_4tb__entry__2}

| 유형 | 설명 |
|-|-|
| 문자열 | `<ObjectType>(<EntrySize>): <Value.toString()> 형식의` 문자열입니다. |
[표 6. 반환]

{#ScpdCchMgr-getCacheEntryDetails_S_S__table_c5d_z35_4tb}  
다음 예제에서는 `이름이 test_cache`인 범위가 지정된 캐시에 대한 캐시 항목 상세 정보를 표시하는 방법을 보여줍니다.

    sn_scoped_cache.ScopedCacheManager.put("test_cache", "key1", "val1");
    gs.info(sn_scoped_cache.ScopedCacheManager.getCacheEntryDetails("global^test_cache", "key1"));

출력:

    java.lang.String (48):
    val1

## ScopedCacheManager -- prefixFlush(문자열 카탈로그, 문자열 접두사) {#ariaid-title5}

지정된 프리픽스로 시작하는 키가 있는 모든 캐시 항목을 플러시합니다.
{#ScpdCchMgr-prefixFlush_S_S__table_b5d_z35_4tb__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 카탈로그 | 문자열 | 범위 지정 캐시 \[sys_scoped_cache\] 테이블에 정의된 캐시의 이름입니다. |
| 프리픽스 | 문자열 | 캐시를 플러시할 때 키를 검색할 프리픽스입니다. |
[표 7. 매개변수]

{#ScpdCchMgr-prefixFlush_S_S__table_b5d_z35_4tb} {#ScpdCchMgr-prefixFlush_S_S__table_c5d_z35_4tb__entry__2}

| 유형 | 설명 |
|-|-|
| 없음 |   |
[표 8. 반환]

{#ScpdCchMgr-prefixFlush_S_S__table_c5d_z35_4tb}  
다음 예제에서는 접두사 `a`를 사용하여 키의 캐시 값을 플러시하는 방법을 보여줍니다.

    sn_scoped_cache.ScopedCacheManager.put("test_cache", "aKey1", "val1");
    sn_scoped_cache.ScopedCacheManager.put("test_cache", "aKey2", "val2");
    sn_scoped_cache.ScopedCacheManager.put("test_cache", "bKey1", "val3");

    sn_scoped_cache.ScopedCacheManager.prefixFlush("test_cache", "a");

    gs.info(sn_scoped_cache.ScopedCacheManager.get("test_cache", "aKey1"));
    gs.info(sn_scoped_cache.ScopedCacheManager.get("test_cache", "aKey2"));
    gs.info(sn_scoped_cache.ScopedCacheManager.get("test_cache", "bKey1"));

출력:

    *** Script: null
    *** Script: null
    *** Script: val3

## ScopedCacheManager -- put(String catalog, String key, String value) {#ariaid-title6}

테이블 또는 테이블 열 쌍 유형인 캐시에 대해 범위가 지정된 캐시에 값을 넣습니다.
{#ScpdCchMgr-put_S_S_S__table_rzq_235_4tb__entry__3}{#ScpdCchMgr-put_S_S_S__sCachedMgrAPI-ph-entry-key}{#ScpdCchMgr-put_S_S_S__sCachedMgrAPI-parm-ph-value}

| 이름 | 유형 | 설명 |
|-|-|-|
| 카탈로그 | 문자열 | 범위 지정 캐시 \[sys_scoped_cache\] 테이블에 정의된 캐시의 이름입니다. |
| 키 | 문자열 | 캐시 키입니다. |
| 값 | 문자열 | 캐시 항목입니다. |
[표 9. 매개변수]

{#ScpdCchMgr-put_S_S_S__table_rzq_235_4tb} {#ScpdCchMgr-put_S_S_S__table_szq_235_4tb__entry__2}

| 유형 | 설명 |
|-|-|
| 없음 |   |
[표 10. 반환]

{#ScpdCchMgr-put_S_S_S__table_szq_235_4tb}  
다음 예제에서는 "abc"라는 키를 정의하고 myCache라는 캐시에 검색하는 방법을 보여줍니다. 캐시는 인시던트 \[incident\] 테이블과 테이블과 쌍을 이룹니다. 이 예에서는 인시던트 기록의 설명 필드를 업데이트한 후 캐시가 플러시되는 방식도 보여줍니다.

    //put value in cache for key "abc"
    gs.info("put key 'abc' into cache with value 'value1'");
    sn_scoped_cache.ScopedCacheManager.put("myCache", "abc", "value1");

    // retrieve value from cache for key "abc"
    gs.info("value of 'abc' in cache: ");
    gs.info(sn_scoped_cache.ScopedCacheManager.get("myCache", "abc")+"\n");

    //update an incident record (add string to the description field)
    gs.info("Updating incident record.");
    var gr = new GlideRecord("incident");
    gr.get("<incident_sys_id>");
    gr.description= "test12345";
    if (gr.update()) {
        gs.info("Record updated successfully.\n");
    };

    //retrieve the value from cache for key "abc"
    gs.info("Retrieving 'abc' from cache. Value should be null because a table pair was updated.");
    gs.info(sn_scoped_cache.ScopedCacheManager.get("myCache", "abc"));

출력:

    scoped_app: put key 'abc' into cache with value 'value1'
    scoped_app: value of 'abc' in cache: 
    scoped_app: value1

    scoped_app: Updating incident record.
    scoped_app: Record updated successfully.

    scoped_app: Retrieving 'abc' from cache. Value should be null because a table pair was updated.
    scoped_app: null

## ScopedCacheManager -- putMultiRow(문자열 카탈로그, 문자열 키, 문자열 값, 배열 ID) {#ariaid-title7}

항목을 캐시에 넣고 지정된 sys_ids이 있는 모든 기록을 해당 항목의 플러시 소스로 설정합니다. 이 방법은 테이블 또는 테이블 열 쌍 형식인 캐시를 위한 것입니다.
{#ScpdCchMgr-putMultiRow_S_S_S_A__table_b5d_z35_4tb__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 카탈로그 | 문자열 | 플러시할 카탈로그입니다. 범위 지정 캐시 \[sys_scoped_cache\] 테이블에 정의된 캐시의 이름입니다. |
| 키 | 문자열 | 새 항목의 캐시 키입니다. |
| 값 | 문자열 | 새 항목에 대한 값입니다. |
| id | 배열 | 항목의 플러시 소스로 사용할 기록 sys_ids 목록입니다. 이러한 기록은 다른 테이블에 속할 수 있습니다. |
[표 11. 매개변수]

{#ScpdCchMgr-putMultiRow_S_S_S_A__table_b5d_z35_4tb} {#ScpdCchMgr-putMultiRow_S_S_S_A__table_c5d_z35_4tb__entry__2}

| 유형 | 설명 |
|-|-|
| 없음 |   |
[표 12. 반환]

{#ScpdCchMgr-putMultiRow_S_S_S_A__table_c5d_z35_4tb}  
다음 예는 인시던트 및 사용자 기록을 플러시 포인트로 사용하는 방법을 보여줍니다. 지정된 기록 중 하나가 업데이트되면 test_cache 키 INC0000060가 플러시됩니다.

    // This example requires a table-row pair for the "incident" and "sys_user" tables assigned to a cache named test_cache
    var inc1ID = "1c741bd70b2322007518478d83673af3";
    var userID = "681ccaf9c0a8016400b98a06818d57c7";

    // update to email should invalidate the entry
    gs.info("initial put");
    putCacheEntry();
    gs.info("cache value for INC0060: " + sn_scoped_cache.ScopedCacheManager.get("test_cache", "INC0000060"));
    var gr = new GlideRecord("sys_user");
    gr.get(userID);
    gr.setValue("email", "a" + gr.getValue("email"));
    gr.update();
    gs.info("updated user email");
    gs.info("cache value: " + sn_scoped_cache.ScopedCacheManager.get("test_cache", "INC0000060"));

    // update to incident number should invalidate the entry.
    gs.info("second put");
    putCacheEntry();
    gs.info("cache value: " + sn_scoped_cache.ScopedCacheManager.get("test_cache", "INC0000060"));
    var gr = new GlideRecord("incident");
    gr.get(inc1ID);
    gr.setValue("number", gr.getValue("number") + "1");
    gr.update();
    gs.info("updated incident number");
    gs.info("cache value: " + sn_scoped_cache.ScopedCacheManager.get("test_cache", "INC0000060"));

    function putCacheEntry() {
        var incGr = new GlideRecord("incident");
        incGr.get(inc1ID);
        var userGr = new GlideRecord("sys_user");
        userGr.get(userID);
        // the cache stores that the incident is assigned to a specific user. So if the incident or user record changes, we should flush.
        sn_scoped_cache.ScopedCacheManager.putMultiRow("test_cache",incGr.getValue("number"), userGr.getValue("email"), [inc1ID, userID]);
    }

출력:

    *** Script: initial put
    *** Script: cache value for INC0060: employee@example.com
    *** Script: Updating Joe Employee's primary email device based on change to user record email address
    *** Script: updated user email
    *** Script: cache value: null
    *** Script: second put
    *** Script: cache value: aemployee@example.com
    *** Script: updated incident number
    *** Script: cache value: null

## ScopedCacheManager -- putRow(문자열 카탈로그, 문자열 키, 문자열 값, 문자열 sysId) {#ariaid-title8}

캐시의 단일 행(테이블)에 값을 넣습니다. 테이블 행 또는 테이블 행 및 열 쌍 유형인 캐시에 이 방법을 사용합니다.
{#ScpdCchMgr-putRow_S_S_S_S__table_rzq_235_4tb__entry__3}{#ScpdCchMgr-putRow_S_S_S_S__sCachedMgrAPI-ph-entry-key}{#ScpdCchMgr-putRow_S_S_S_S__sCachedMgrAPI-parm-ph-value}

| 이름 | 유형 | 설명 |
|-|-|-|
| 카탈로그 | 문자열 | 범위 지정 캐시 \[sys_scoped_cache\] 테이블에 정의된 캐시의 이름입니다. |
| 키 | 문자열 | 캐시 키입니다. |
| 값 | 문자열 | 캐시 항목입니다. |
| sysId | 문자열 | 옵션입니다. 테이블의 행, 즉 추적 중인 레코드의 Sys_id입니다. |
[표 13. 매개변수]

{#ScpdCchMgr-putRow_S_S_S_S__table_rzq_235_4tb} {#ScpdCchMgr-putRow_S_S_S_S__table_szq_235_4tb__entry__2}

| 유형 | 설명 |
|-|-|
| 없음 |   |
[표 14. 반환]

{#ScpdCchMgr-putRow_S_S_S_S__table_szq_235_4tb}  
다음 예제에서는 incident_cache라는 테이블 행 쌍 캐시 유형을 사용합니다. 캐시에 인시던트 호출자 ID가 추가되고 변경된 레코드의 sys_id과 연결된 캐시 항목이 지워집니다.

    // build the cache:
    var number = 'INC0009009';
    var inc = new GlideRecord('incident');
    inc.addQuery('number', number);
    inc.query();
    inc.next();
    var entry = inc.caller_id.getDisplayValue();
    sn_scoped_cache.ScopedCacheManager.putRow("incident_cache", inc.getValue('number'), entry, inc.getValue('sys_id'));
    gs.info(sn_scoped_cache.ScopedCacheManager.get("incident_cache", number));

    // when the incident is altered, the cache entry will be flushed.
    inc = new GlideRecord('incident');
    inc.addQuery('number', number);
    inc.query();
    inc.next();
    inc.setValue('short_description', inc.getValue('short_description') + "a");
    inc.update();
    gs.info(sn_scoped_cache.ScopedCacheManager.get("incident_cache", number));

출력:

    scoped_app: John Jones
    scoped_app: null


