首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每15分钟刷新一次Azure Redis缓存

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

Stack Overflow用户
提问于 2015-11-05 02:05:34
回答 1查看 792关注 0票数 0

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

我正在使用ubuntu托管(Node.js) webservcies。因此,每当调用rest时,它都需要从缓存中获取数据并提供数据。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-05 07:31:35

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

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

NodeJS ORM for MySQL:

NodeJS的Redis客户端:

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

代码语言:javascript
复制
// 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配置,您需要使用vim /etc/crontab作为root用户或sudo用户:

代码语言:javascript
复制
$ sudo vim /etc/crontab
# Add a crontab record to run nodejs script interval 15 mins
*/15 * * * * node \home\user\sync-mysql-redis.js
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33535449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档