当前位置: 首页 > 软件库 > 程序开发 > 缓存系统 >

race-cache

确保依赖数据的高可用缓存函数
授权协议 MIT
开发语言 JavaScript TypeScript
所属分类 程序开发、 缓存系统
软件类型 开源软件
地区 国产
投 递 者 叶越
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

race-cache

确保依赖数据的高可用缓存函数。

执行步骤如下: 

Install

npm install --save race-cache

Usage

import { raceCache, raceCacheWithInfo } from 'race-cache'

async function getList(url){
  const data = await raceCache(url /*缓存Key*/, fetch(url))
  // or
  const info = await raceCacheWithInfo(url /*缓存Key*/, fetch(url))
  // info?.ok info?.timeout info?.error info.data
}

内置缓存在浏览器环境使用 localStorage,在 node.js 环境使用的原生 Map,可通过 cache 参数进行自定义缓存接口。

API

import { raceCache, raceCacheWithInfo, cache } from 'race-cache'

raceCache(key, promise[, option])
// or
raceCacheWithInfo(key, promise[, options])

// 内置缓存对象cache
cache.get
cache.set
cache.unset
cache.clear
cache.setCapacity
...

注: 内置缓存 LRU 容量默认为:99

interfaces

interface RaceCacheOptions<T> {
	// 内置缓存超时时间,单位:ms
	// 默认:3600 * 24 * 365 * 1000
	expire?: number;
	// 等待外部响应时间,超时后走缓存数据,单位:ms
	// 默认:0
	waitTime?: number;
	// 是否忽略promise的异常catch,并使用缓存数据
	// 默认:true
	ignoreError?: boolean;
	// 获取内部状态信息,如:数据是否超时、异常或正常的返回
	raceCallback?: (raceInfo: RaceInfo<T>) => void;
	// 自定义缓存接口:get,set
	cache?: {
        get: (key: string) => Promise<any>;
        set: (key: string, value: any, options?: CacheOptions | undefined) => Promise<void>;
  };
	// 超时触发回调,只在缓存存在的情况下触发
	onTimeout?: (value: GetPromiseResolveType<T>) => void;
	// 传入的 promise 触发 resolve 时调用
	onFulfilled?: (value: GetPromiseResolveType<T>) => void;
	// 传入的 promise 触发 reject 时调用
	onRejected?: (reason: any) => void;
}

interface RaceInfo<T> {
    // 正常返回标识
    ok?: boolean;
    // 超时返回标识
    timeout?: boolean;
    // 异常返回标识
    error?: any;
    // 返回数据
    data: GetPromiseResolveType<T>;
}

interface CacheOptions {
	// 缓存超时时间,单位:ms
	expire?: number;
}
  • Guava Cache Guava Cache是google的java扩展包中的一个模块,主要提供缓存服务,整体实现比较简单,单模块的核心源文件不超过20个,花几个小时可以看个大概。关于Guava Cache的使用介绍可以参考github上的wiki: https://github.com/google/guava/wiki/CachesExplained Cache的实现类似Concurrent

  • golang的data race 一、名词解析 1、data race: Any race is a bug 定义: ①多个线程(协程)对于同一个变量、②同时地、③进行读/写操作、并且④至少有一个线程进行写操作。(也就是说,如果所有线程都是只进行读操作,那么将不构成数据争用) 后果: 如果发生了数据争用,读取该变量时得到的值将变得不可知(根据内存模型),使得该多线程程序的运行结果将完全不可预测,有

  • 1,克隆源码 git clone https://github.com/filecoin-project/lotus.git 1.1,v0.5.1 # git show commit d789ca9299be0b1a9ceaf1f8594f0839922013df (HEAD -> master, origin/master, origin/HEAD) Merge: 56d419e9 aacfc

  • Promise API 在 Promise 类中,有 6 种静态方法。我们在这里简单介绍下它们的使用场景。 Promise.all 假设我们希望并行执行多个 promise,并等待所有 promise 都准备就绪。 例如,并行下载几个 URL,并等到所有内容都下载完毕后再对它们进行处理。 这就是 Promise.all 的用途。 语法: let promise = Promise.all([...

  • LoadingCache是guava开发包下的一款十分实用的本地缓存工具类。 什么时候用? 对于一些十分常用的热点数据,可以考虑加本地缓存。比如一些热点新闻的数据,否则会导致存储热点问题。比如redis会有热key。 接下来看一下LoadingCache接口的主要方法: public interface LoadingCache<K, V> extends Cache<K, V>, Functio

  • 为什么程序员需要关心顺序一致性(Sequential Consistency)而不是Cache一致性(Cache Coherence?) 最后一次修改:2010年11月11日 本文所讨论的计算机模型是Shared Memory Multiprocessor,即我们现在常见的共享内存的多核CPU。本文适合的对象是想用C++或者Java进行多线程编程的程序员。本文主要包括对Sequential Con

  • @郑昀汇总   一,现象: 高并发情况下,使用 OSCache 作为本地缓存中间件的前端服务,日志文件中会出现大量如下错误信息: 异常堆栈: java.lang.IllegalStateException: Cannot complete cache update - current state (2) is not UPDATE_IN_PROGRESS          at com.opens

  • 一、使用 1)简单初始化: LoadingCache<Long, Long> loadCache = CacheBuilder.newBuilder() .expireAfterWrite(6, TimeUnit.SECONDS) .maximumSize(100) .build(new Ca

  • 本地缓存实现 var cache = struct { // 声明 struct 字面量 cahce (匿名结构体) sync.Mutex // 互斥锁, 内嵌 Struct caches map[string]string // kv 内存存储 }{ caches: make(map[string]string), // 初始化

 相关资料
  • UMD™ Cache(高速缓存)    将使用频率较高的数据蓄积至PSP™主机的内存,以减少UMD™的读取次数,加快数据读取速度的设定。 关 不变更UMD™的读取速度。 开 减少UMD™的读取频率。 提示 设定为[开]时,可能无法经由Ad Hoc模式与其他PSP™正确通讯。此时请调整为[关]。

  • 本文向大家介绍ASP.NET数据库缓存依赖实例分析,包括了ASP.NET数据库缓存依赖实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ASP.NET数据库缓存依赖,分享给大家供大家参考。具体如下: 一般在ASP.NET中,Cache类最酷的特点是它能根据各种依赖来良好的控制自己的行为。以文件为基础的依赖是最有用的,文件依赖项是通过使用 Cache.Insert 并提供引用文件的 C

  • swoole框架目前支持5种Cache适配器,可以配置apps/configs/cache.php的type来设定不同类型的Cache Memcache 使用memcache缓存数据,配置示例: $cache['master'] = array( 'type' => 'Memcache', 'use_memcached' => true, //使用memcached扩展 '

  • 本文向大家介绍java使用hashMap缓存保存数据的方法,包括了java使用hashMap缓存保存数据的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java使用hashMap缓存保存数据的方法。分享给大家供大家参考,具体如下: 更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇

  • 1、使用 Ehcache 缓存 ActiveRecord 可以使用缓存以大大提高性能,默认的缓存实现是 ehcache,使用时需要引入 ehcache 的 jar 包及其配置文件,以下代码是Cache使用示例: public void list() { List<Blog> blogList = Blog.dao.findByCache("cacheName", "key", "selec

  • 主要内容:1. 平凡函数依赖,2. 非平凡的功能依赖DBMS函数依赖是两个属性之间存在的关系。它通常存在于表中的主键和非键属性之间。 函数依赖的左侧被称为决定因素,生产的右侧被称为依赖。 例如: 假设有一个包含属性的员工表:,,。 这里属性是唯一地标识表的属性,因为如果知道,就可以知道与这个属性关联的员工姓名。 函数依赖可以写成: 因此可以说在函数上依赖于。 函数依赖的类型 1. 平凡函数依赖 如果是的子集,则具有平凡的函数依赖性。 以下依赖关系也