Skip to content

使用缓存

缓存(cache),是每个系统必不可少的一个功能,我们可以使用 Yao 自带的缓存功能,来进行一些临时数据存储

缓存可以使用lru,redis,mongo三种方式来实现。

使用LRU缓存

Store 使用缓存,新增文件stores/cache.lru.json

应用目录结构:

bash
├── apis        # 用于存放接口描述文件
├── models        # 用于存放数据模型描述文件
├── db
└── stores    #用于存放缓存目录
└── app.json

编写代码cache.lru.json

js
{
  "name": "LRU Cache",
  "description": "LRU缓存",
  "type": "lru",
  "option": { "size": 102400 }
}

在任意 JS 文件中使用缓存,Set 设置缓存,Get 获取缓存数据,新建scripts/test.js

js
function cacheOperation() {
  var cache = new Store('cache');

  cache.Set('key', 'for bar .....');

  var cache_info = cache.Get('key');
  return cache_info;
}

运行 yao run scripts.test.cacheOperation

使用Redis缓存

需要配置redis数据库连接,参考redis连接器 Store 使用缓存,新增文件stores/cache.redis.json

编写代码cache.redis.json

json
{
  "name": "redis Cache",
  "description": "redis缓存",
  "connector": "redis"
}

使用Mongo缓存

需要配置mongo数据库连接,参考MongoDB连接器

新增文件stores/cache.mongo.json

编写代码cache.mongo.json

json
{
  "name": "redis Cache",
  "description": "redis缓存",
  "connector": "mongo"
}

Store处理器

Store 的使用主要是通过处理器来处理:

Store 处理器的语法是stores.[StoreID].set,这里的 storeid 即是上面文件 product.mongo.yao的 ID 部分。即是product

js
//设置值
Process('stores.product.Set', 'key1', 'value');

// redis支持超时配置
Process('stores.product.Set', 'key1', 'value', ttl);

//读取值
Process('stores.product.Get', 'key1');

//删除值
Process('stores.product.Del', 'key1');

//读取并删除
Process('stores.product.GetDel', 'key1');

//检查是否存在
Process('stores.product.Has', 'key1');

//获取长度
Process('stores.product.Len');

//获取所有key
Process('stores.product.Keys');

//清空
Process('stores.product.clear');