[PERS SDK - v2.3.26](/sdk-reference/readme) / [Exports](/sdk-reference/modules) / CacheService

# Class: CacheService

## Table of contents

### Constructors

- [constructor](/sdk-reference/classes/cacheservice#constructor)


### Methods

- [set](/sdk-reference/classes/cacheservice#set)
- [get](/sdk-reference/classes/cacheservice#get)
- [getOrSet](/sdk-reference/classes/cacheservice#getorset)
- [delete](/sdk-reference/classes/cacheservice#delete)
- [clearByPrefix](/sdk-reference/classes/cacheservice#clearbyprefix)
- [clear](/sdk-reference/classes/cacheservice#clear)
- [cleanup](/sdk-reference/classes/cacheservice#cleanup)
- [destroy](/sdk-reference/classes/cacheservice#destroy)
- [createNamespace](/sdk-reference/classes/cacheservice#createnamespace)


## Constructors

### constructor

• **new CacheService**(`config?`): [`CacheService`](/sdk-reference/classes/cacheservice)

#### Parameters

| Name | Type |
|  --- | --- |
| `config?` | `Partial`<[`CacheConfig`](/sdk-reference/interfaces/cacheconfig)> |


#### Returns

[`CacheService`](/sdk-reference/classes/cacheservice)

#### Defined in

[core/cache/cache.service.ts:57](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/cache/cache.service.ts#L57)

## Methods

### set

▸ **set**<`T`>(`key`, `value`, `ttl?`): `void`

Set a value in cache with optional TTL

#### Type parameters

| Name |
|  --- |
| `T` |


#### Parameters

| Name | Type |
|  --- | --- |
| `key` | `string` |
| `value` | `T` |
| `ttl?` | `number` |


#### Returns

`void`

#### Defined in

[core/cache/cache.service.ts:65](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/cache/cache.service.ts#L65)

### get

▸ **get**<`T`>(`key`): `null` | `T`

Get a value from cache

#### Type parameters

| Name |
|  --- |
| `T` |


#### Parameters

| Name | Type |
|  --- | --- |
| `key` | `string` |


#### Returns

`null` | `T`

#### Defined in

[core/cache/cache.service.ts:94](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/cache/cache.service.ts#L94)

### getOrSet

▸ **getOrSet**<`T`>(`key`, `fetcher`, `ttl?`): `Promise`<`T`>

Get or set pattern - common caching pattern with race condition protection

#### Type parameters

| Name |
|  --- |
| `T` |


#### Parameters

| Name | Type |
|  --- | --- |
| `key` | `string` |
| `fetcher` | () => `Promise`<`T`> |
| `ttl?` | `number` |


#### Returns

`Promise`<`T`>

#### Defined in

[core/cache/cache.service.ts:121](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/cache/cache.service.ts#L121)

### delete

▸ **delete**(`key`): `boolean`

Delete a specific key

#### Parameters

| Name | Type |
|  --- | --- |
| `key` | `string` |


#### Returns

`boolean`

#### Defined in

[core/cache/cache.service.ts:151](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/cache/cache.service.ts#L151)

### clearByPrefix

▸ **clearByPrefix**(`prefix`): `number`

Clear all keys matching a prefix

#### Parameters

| Name | Type |
|  --- | --- |
| `prefix` | `string` |


#### Returns

`number`

#### Defined in

[core/cache/cache.service.ts:159](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/cache/cache.service.ts#L159)

### clear

▸ **clear**(): `void`

Clear all cache

#### Returns

`void`

#### Defined in

[core/cache/cache.service.ts:171](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/cache/cache.service.ts#L171)

### cleanup

▸ **cleanup**(): `number`

Force cleanup of expired entries

#### Returns

`number`

#### Defined in

[core/cache/cache.service.ts:181](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/cache/cache.service.ts#L181)

### destroy

▸ **destroy**(): `void`

Stop cleanup timer and clear cache

#### Returns

`void`

#### Defined in

[core/cache/cache.service.ts:201](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/cache/cache.service.ts#L201)

### createNamespace

▸ **createNamespace**(`namespace`): `Object`

Create a namespaced cache interface

#### Parameters

| Name | Type |
|  --- | --- |
| `namespace` | `string` |


#### Returns

`Object`

| Name | Type |
|  --- | --- |
| `set` | <T>(`key`: `string`, `value`: `T`, `ttl?`: `number`) => `void` |
| `get` | <T>(`key`: `string`) => `null` | `T` |
| `getOrSet` | <T>(`key`: `string`, `fetcher`: () => `Promise`<`T`>, `ttl?`: `number`) => `Promise`<`T`> |
| `delete` | (`key`: `string`) => `boolean` |
| `clear` | () => `number` |


#### Defined in

[core/cache/cache.service.ts:209](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/cache/cache.service.ts#L209)