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

Mysql 每15分钟刷新一次Azure Redis缓存,mysql,node.js,azure,redis,Mysql,Node.js,Azure,Redis,我需要每15分钟将MySQL数据库中的数据同步到Redis缓存,以便缓存为最新数据 我正在使用ubuntu来托管(Node.js)Web服务。所以每次调用RESTAPI时,它都需要从缓存中获取数据并提供服务 所以现在我需要写一个后台作业来将MySQL数据同步到缓存中 如果我需要编写后台作业,我可以在node.js中编写并同步它,然后在Ubuntu中使用crontab命令作为后台作业运行。是。您可以编写一个nodejs脚本,并通过crontab命令运行它,将数据从MySQL同步到Redis 根据我

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

我正在使用ubuntu来托管(Node.js)Web服务。所以每次调用RESTAPI时,它都需要从缓存中获取数据并提供服务

所以现在我需要写一个后台作业来将MySQL数据同步到缓存中


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

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

根据我的经验,您需要下面的一些nodejs包来帮助实现这些需求

用于MySQL的NodeJS ORM:

  • 续集:(npm安装) 续集(mysql)
NodeJS的Redis客户端:

  • ioredis:(npm安装ioredis)
  • node_redis:(npm安装) 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
        }
    }
  });
$ sudo vim /etc/crontab
# Add a crontab record to run nodejs script interval 15 mins
*/15 * * * * node \home\user\sync-mysql-redis.js