https://github.com/calintamas/react-native-cachemere
Async cache manager
https://github.com/calintamas/react-native-cachemere
cache react-native storage
Last synced: about 1 year ago
JSON representation
Async cache manager
- Host: GitHub
- URL: https://github.com/calintamas/react-native-cachemere
- Owner: calintamas
- License: mit
- Created: 2019-08-04T09:34:53.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-03-04T04:55:22.000Z (over 3 years ago)
- Last Synced: 2025-03-26T10:04:13.611Z (over 1 year ago)
- Topics: cache, react-native, storage
- Language: JavaScript
- Homepage:
- Size: 661 KB
- Stars: 4
- Watchers: 2
- Forks: 1
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# react-native-cachemere


An async cache manager.
## Install
Since `AsyncStorage` has been removed from the React Native core, you first need to install [@react-native-community/async-storage](https://github.com/react-native-community/async-storage). Then,
```
yarn add react-native-cachemere
```
## Example
```js
import Cache from 'react-native-cachemere'
const getData = async () => {
const CACHE_KEY = `my_cache_key`;
// First, try to get data from cache
const cachedData = await Cache.get(CACHE_KEY);
if (cachedData) {
return cachedData
}
// If no cache is set, get data from server
const data = await getDataFromServer();
// Then, cache that data
const INVALIDATE_AFTER = 3; // the number of attempts after which the cache is invalidated
// if set to null, cache is only invalidated after TTL expires
const TTL = Cache.TTL_12H; // cache for 12h
await Cache.set(CACHE_KEY, data, TTL, INVALIDATE_AFTER);
return data
}
```
## Usage
### set
```js
await Cache.set(key, data, ttl, attempts)
```
`key` is a string used to set and get the cached data.
`data` must be serializable object.
`ttl` is expressed in seconds. There are some standard TTLs exposed by the lib.
```js
Cache.TTL_12H = 43200
Cache.TTL_8H = 28800
Cache.TTL_6H = 21600
Cache.TTL_4H = 14400
Cache.TTL_1H = 3600
```
`attempts` is an integer. Cache is invalidated after this number of attempts. If left unset (or set to `null`), cache is only invalidated after TTL expires.
### get
```js
await Cache.get(key)
```
Returns the data as a parsed JSON. If there's no cached data for that `key` or that data cache has expired, returns `null`.
> When cache expires it is automatically cleared from the storage.
### getAll
```js
const all = await Cache.getAll()
```
Returns an array with all cached objects, parsed.
### clear
```js
await Cache.clear(key)
```
Cache is removed for the specified `key`.
### clearExpired
```js
await Cache.clearExpired()
```
Remove all expired cache. Can be called at app startup to ensure a decluttered Storage.
### clearByRegex
```js
await Cache.clearByRegex(regex)
```
Remove all cache with keys that pass the `regex` condition.
Can be used when fetching the data with pagination and need to cache every group of data received.