web.config 配置
//连接Redis的服务器地址和密码配置
<add key="redispath" value="124.128.87.13:16378,allowadmin=true,abortConnect = FALSE,Password=1f29c59648136e1a6d3ef650b0188362" />
//保存Redis点击量
string redispath = ConfigurationManager.AppSettings["redispath"].ToString();
RedisHelper redis = new RedisHelper(0, redispath);
string now = DateTime.Now.ToString("yyyy-MM-dd");
//第一个参数是key 第二个参数是 ,第三个参数是自增量
redis.HashIncrement(now, "base", 1);
//获取Redis里面的hash数据 要执行的任务 private void doAt1AM(object state) { //保存数据 jg_clicknum_Server clicknumBll = new jg_clicknum_Server(); string redispath = ConfigurationManager.AppSettings["redispath"].ToString(); RedisHelper redis = new RedisHelper(0, redispath); //DateTime now = DateTime.Now.AddDays(-1); DateTime now = DateTime.Now; string timeStr = now.ToString("yyyy-MM-dd"); RedisValue[] rediskeys = redis.HashKeys(timeStr);//获取所有value string valueStr = string.Empty; foreach (var item in rediskeys) { string clicknum = redis.HashGet(timeStr, item.ToString());//获取所有value valueStr += "('"+ timeStr + "','"+ item.ToString() + "',"+ clicknum + "),"; } if (valueStr.Length > 0) { valueStr = valueStr.TrimEnd(','); string sqlFormat = "INSERT INTO jg_clicknum (daytime,name,clicknum) VALUES " + valueStr + " ON DUPLICATE KEY UPDATE clicknum = clicknum + VALUES(clicknum) "; clicknumBll.exeSql(sqlFormat); //清除计时器,启动新计时器 bool dd = redis.KeyDelete(timeStr); taskIsRunning = false; LogHelper.info(DateTime.Now + "----now:我更新了"); }
//设定定时执行
//setTaskAtFixedTime();
private bool taskIsRunning = false;
/// <summary>
/// 当前任务是否处于忙的状态
/// </summary>
public bool TaskIsRunning { get { return taskIsRunning; } }
System.Threading.Timer timer = null;
//定时器零点更新
public void setTaskAtFixedTime() { if (!TaskIsRunning) { taskIsRunning = true; DateTime now = DateTime.Now; DateTime oneOClock = DateTime.Today.AddHours(0.0); //凌晨0:00 //DateTime oneOClock = DateTime.Today.AddHours(11); //测试 if (now > oneOClock) { oneOClock = oneOClock.AddDays(1.0); } int msUntilFour = (int)((oneOClock - now).TotalMilliseconds); //处理关闭其他的线程 LogHelper.info(oneOClock + "----now:开始启动了"); timer = new System.Threading.Timer(doAt1AM); timer.Change(msUntilFour, Timeout.Infinite); } }