今天碰到一个需求 需要把大批的数据一次性插入到redis 并分批读出来 而且需要设定过期时间 查阅redis文档 最终找到了答案 要用到lpush 而lpush的数组对象里又要是字符串 为此 需要将大数组转换下 以下是实现方法 仅供参考
var redis=require('redis') ;
var settings= {
redis_host: '127.0.0.1',
redis_port: 6379,
redis_psd: '',
redis_db: 0,
}
var _ = require('underscore');
//要插入的数据
var data = [
settings,
settings,
settings
];
//处理数据
var data2 = _.map(data, function (item) {
return JSON.stringify(item);
});
//连接redis
var client = redis.createClient(settings.redis_port, settings.redis_host);
//push数据
client.lpush('niefengjun.cn',data2)
client.expire('xiao', 30); //过期时间 单位秒
//查询数据
client.lrange('niefengjun.cn',0,4,function(err,result)
{
console.log(err,result)
}
)结果
[ '{"redis_host":"172.28.19.72","redis_port":6379,"redis_psd":"","redis_db":0}',
'{"redis_host":"172.28.19.72","redis_port":6379,"redis_psd":"","redis_db":0}',
'{"redis_host":"172.28.19.72","redis_port":6379,"redis_psd":"","redis_db":0}' ]
null [ '{"redis_host":"172.28.19.72","redis_port":6379,"redis_psd":"","redis_db":0}',
'{"redis_host":"172.28.19.72","redis_port":6379,"redis_psd":"","redis_db":0}',
'{"redis_host":"172.28.19.72","redis_port":6379,"redis_psd":"","redis_db":0}' ]以上的方法 封装一下
var _ = require('underscore');
var redisconfig = require('../../config/redis.js').config;
var redis=require('redis') ;
var Q = require('q');
/*
key key
args 要存入的数据
expire 过期时间
*/
function lpush(key, args, expire) {
var client = redis.createClient(redisconfig.redis_port, redisconfig.redis_host);
var args1 = _.map(args, function (item) {
return JSON.stringify(item);
});
client.lpush(key, args1);
client.expire(key, expire);
return true;
}
function lrange(key, start,end) {
var q = Q.defer();
var client = redis.createClient(redisconfig.redis_port, redisconfig.redis_host);
//LRANGE
client.lrange(key, start,end, function (err, result) {
if (!err) {
q.resolve(result)
}
else {
console.log('redis lrange读取,key=', key, err, result);
q.resolve(err)
}
}
)
return q.promise;
}
exports.lpush = lpush;
exports.lrange = lrange;调用
var key='user-11111' ;
var Q = require('q');
var args=[{niefengjun:'xiaonie'},{niefengjun:'xiaoding'},{niefengjun:'xiaowang'},{niefengjun:'.cn'}]
redis.lpush(key,args,30) ;
return redis.lrange(key,0,10).then(function(data)
{
console.log(data)
}
)结果
bogon:test tom$ node redis.js
[ '{"niefengjun":".cn"}',
'{"niefengjun":"xiaowang"}',
'{"niefengjun":"xiaoding"}',
'{"niefengjun":"xiaonie"}' ]