Redis过期转移让数据更长久有效(redis过期转移)

Redis作为一种高性能的内存数据库,在许多WEB应用中得到了广泛应用。然而,Redis里的数据是有时效性的,一定时间后,Redis内的数据将无法被访问、实用,即使从逻辑上来说它们仍然是有用的数据。

因此,基于Redis的过期日期的数据转移解决方案几乎成为必不可少的。下面将实现一个过期转移的脚本,以完成未实用的Redis数据迁移到MongoDB存储,实现改变Redis里数据有效期,使其永久有效。

初始化MongoDB和Redis连接:

“`javascript

// mongodb

const mongo = require(‘mongodb’);

const mongodb = new mongo.MongoClient(‘mongodb://localhost:27017’);

// redis

const redis = require(‘redis’);

const client = redis.createClient({

host: ‘127.0.0.1’,

port:6379

});

client.select(1);


之后,创建一个用于操作Redis过期key的函数:

```javascript
// 操作过期key的函数
async function expiredKey(){
// 连接mongodb
const dbs = awt mongodb.connect();
// 获取Redis的所有过期key
let keyList = awt client.keys('*expires*');
for(let key of keyList){
// 获取key的内容
let content = awt client.get(key);
// 将key的内容插入MongoDB
let insertResult = awt dbs.db('databaseName').colletion('colletionName').insertOne({
key_name: key,
content: content
});
if (insertResult.result.ok == 1) {
console.log('内容插入MongoDB成功');
// 删除Redis里对应过期key
let delResult = awt client.del(key);
if(delResult) console.log('Redis过期Key已删除');
}
}
client.quit();
dbs.close();
}

利用定时器,定时调用上面定义的函数,实现Redis过期转移定时任务。

“`javascript

// 定时任务

const schedule = require(‘node-schedule’);

const rule = new schedule.RecurrenceRule();

rule.hour = 1;

schedule.scheduleJob(rule, async function() {

awt expiredKey();

});


因此,利用上述的脚本让我们可以轻松的将定期更新的内容从Redis转移到MongoDB,由于MongoDB是永久存储的,这样就可以节约带宽空间,避免重新拉取数据,并将有效的数据的有效性改变为永久有效,使数据更长久有效。

数据运维技术 » Redis过期转移让数据更长久有效(redis过期转移)