前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nodejs的redis工具类 原

nodejs的redis工具类 原

作者头像
尚浩宇
发布2018-08-17 11:23:42
8190
发布2018-08-17 11:23:42
举报
文章被收录于专栏:杂烩杂烩

做一个工具时,起初用到redis,后来发现有更好的解决方案,遂放弃redis,但辛辛苦苦写的code不舍得删,这里记录下

nodejs

代码语言:javascript
复制
/**
 * Created by shangchengcai on 2018/1/9.
 */
/**
 * Module dependencies.
 */
var ioredis = require('ioredis');
var redis   = require('redis');
var conf=require("../conf/arconf.json");
var logger=require("../util/LogUtil").LOGGER;
var client;

/**
 * config redis client by redis deploy type
 */
switch (conf.redisDeployType){
    case "single":
        var redisconf=conf.redisAddress[0];
        client=redis.createClient(redisconf.port, redisconf.host);
        break;
    case "cluster":
        client=new ioredis.Cluster(conf.redisAddress);
        break;
    default:
        throw new Error("redisDeployType only can be single or cluster");
        break;

}

/**
 * create redis client err
 */
client.on("error", function(error) {
    logger.error(error);
});

/**
 * get hash key fields
 */
function get(key,callback){
    client.hscan(key,0, function (err, res) {
        callback(err,res[1]);
    });
}

/**
 * remove hash key field
 */
function remove(key,field){
    client.hdel(key,field, function (err, res) {
        if(err){
            logger.info(err);
        }
        logger.info("remove faild host for key="+key+" and field="+field+" excute success!redis return code is "+(res===0?"faild,because redis aready don't contains this key!":"success!"));
    });
}

/**
 * close redis cluster client
 */
function close(){
    client.quit(function(){
        logger.info("close redis success!");
    });
}
function scan(key,callback){
    client.scan("0","MATCH","data_sync.voole.com*",function (err, res) {
        console.log(res);
        callback(err,res[1]);
    });
}

scan("data_*",function(err,data){
    //console.log(data);
    close();
})



/**
 * export get、remove、close
 */
exports.get=get;
exports.remove=remove;
exports.close=close;

java

代码语言:javascript
复制
package com.scc.ar.client.redis;

import org.quartz.Job;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @ClassName: SchedulerUtil
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author shangchengcai@voole.com
 * @date 2018年1月12日 下午5:39:24
 * 
 */
public class RedisUtil {
	private static final Logger LOGGER = LoggerFactory.getLogger(RedisUtil.class);
	private static final String TRIGGER_NAME = "AR_CLIENT_TRIGGER";
	private static final String TRIGGER_GROUP = "AR_CLIENT_TRIGGER_GROUP";
	private static final String JOB_NAME = "AR_CLIENT_JOB";
	private static final String JOB_GROUP = "AR_CLIENT_JOB_GROUP";
	private static Scheduler scheduler = null;
	private static RedisUtil schedulerUtil;

	/**
	 * <p>
	 * Title:
	 * </p>
	 * <p>
	 * Description:
	 * </p>
	 * 
	 * @author shangchengcai@voole.com
	 * @date 2018年1月12日 下午6:07:52
	 */
	private RedisUtil() {
	}

	static {
		try {
			scheduler = StdSchedulerFactory.getDefaultScheduler();
		} catch (SchedulerException e) {
			e.printStackTrace();
			LOGGER.error(e.getMessage(), e);
			System.exit(1);
		}
	}

	public static synchronized RedisUtil build() {
		if (null == schedulerUtil) {
			schedulerUtil = new RedisUtil();
		}
		return schedulerUtil;
	}

	public <T extends Job> RedisUtil addJob(Class<T> jobclass, int interval) {
		try {
			Trigger trigger = TriggerBuilder.newTrigger().withIdentity(TRIGGER_NAME, TRIGGER_GROUP).startNow()
					.withSchedule(
							SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(interval).repeatForever())
					.build();
			JobDetail job = JobBuilder.newJob(jobclass).withIdentity(JOB_NAME, JOB_GROUP).build();
			scheduler.scheduleJob(job, trigger);
		} catch (SchedulerException e) {
			e.printStackTrace();
			LOGGER.error(e.getMessage(), e);
		}
		return this;
	}

	public void start() {
		try {
			scheduler.start();
		} catch (SchedulerException e) {
			e.printStackTrace();
			LOGGER.error(e.getMessage(), e);
		}
	}

	public void close() {
		try {
			scheduler.shutdown();
		} catch (SchedulerException e) {
			e.printStackTrace();
			LOGGER.error(e.getMessage(), e);
		}
	}

}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档