mysql - 每 15 分钟刷新一次 Azure Redis 缓存

标签 mysql node.js azure redis

我需要每15分钟将数据从MySQL数据库同步到Redis缓存,以便缓存为最新数据。

我使用 ubuntu 来托管 (Node.js) 网络服务。因此,每次调用 REST API 时,它都需要从缓存中获取数据并提供服务。

那么现在我需要编写一个后台作业来将 MySQL 数据同步到缓存内存。

如果我需要编写后台作业,我可以在 node.js 中编写并同步它,并使用 crontab 命令在 Ubuntu 中作为后台作业运行。

最佳答案

是的。您可以编写一个nodejs脚本并通过crontab命令运行它以将数据从MySQL同步到Redis。

根据我的经验,您需要以下一些 Nodejs 包来帮助实现需求。

MySQL 的 NodeJS ORM:

NodeJS 的 Redis 客户端:

示例代码~/sync-mysql-redis.js:

// Create a mysql client connection
var Sequelize = require('sequelize');
var sequelize = new Sequelize('mysql://user:pass@azure_mysql_host:3306/dbname');
// Create a redis client using node_redis
var redis = require("redis");
var client = redis.createClient(6379, '<redis_host>');
// Query entities data from MySQL table
sequelize.query("SELECT * FROM `t_entity`", { type: sequelize.QueryTypes.SELECT})
  .then(function(entities) {
    for(var entity in entites) { // for-each entity from entites list
        var hash_key = entity.Id // for example, get the entity id as redis hash
        for(var prop in entity) { // for-each property from entity
            client.hset([hash_key, prop, entity[prop]], redis.print); // mapping a mysql table record to a redis hash
        }
    }
  });

对于 crontab 配置,您需要以 root 或 sudo 用户身份 vim/etc/crontab:

$ sudo vim /etc/crontab
# Add a crontab record to run nodejs script interval 15 mins
*/15 * * * * node \home\user\sync-mysql-redis.js

关于mysql - 每 15 分钟刷新一次 Azure Redis 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33535449/

相关文章:

php - 从复选框中获取错误的变量

node.js - 我应该在 nuxt.js 服务器目录中构建应用程序的服务器端吗?

javascript - 如何安装 babel-polyfill 库?

azure - 如何在运行时检索 WebJob 的名称

azure - 使用 helm 从 ACR 中拉出容器

node.js - Azure App Service 上的 Node 如何启动?

php - 在html中为表数据制作前进/后退按钮

mysql - Laravel 迁移中的 Neo4j 和 Mysql

mysql - PHP LOAD DATA INFILE 仅插入某些文件的第一行

node.js - 如何在 meteor 中使用 mongo 模式验证和 typescript ?