热词统计以及Quartz.net的简单使用

一.热词统计

方案一:

设计一个表:ID       KeyWord     Count

当用户再输入框中查询的时候,我们就往表中插入数据,在插入之前首先判断是否已经存在keyword,存在的话,让Count+1

这种方案非常费时

方案二:

           表 :ID      Keyword     Count

每次用户输入的时候直接插入,不需要判断是否存在,当进行热词展示的时候,通过Group By语句进行统计

同样比较费时

方案三:

           表一明细表:ID   Keyword

           表二汇总表:ID   KeyWord   Count

用户每次输入并进行查询的时候,将数据插入到明细表中,然后使用定时任务,当用户量访问量比较小的时候,执行汇总操作,将数据插入到汇总表中。

这种实用性比较高

方案四:

对于用户访问量比较大的数据,采用关系型数据库,速度还是太慢。可以使用NoSql数据库,可以有效的解决高并发。

二.Quartz.net(计划任务组件)的简单使用

1.主要的dll文件

2.Quartz.net的使用有两种方式,1.采用配置文件的方式配置参数 2.直接在程序中使用代码设置参数,此处直接使用官方的demo中的例子,并适当的修改

  static void Main(string[] args)
        {
            ISchedulerFactory sf = new StdSchedulerFactory();
            IScheduler sched = sf.GetScheduler();
            //代码添加job和trigger

            DateTimeOffset startTime = DateBuilder.NextGivenSecondDate(null, 5);
            IJobDetail job = JobBuilder.Create<KeywordJob>()
                .WithIdentity("job1", "group1")
                .Build();

            // Trigger the job to run on the next round minute
            ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity("trigger1", "group1")
                .StartAt(startTime).WithSimpleSchedule(x => x.WithIntervalInSeconds(5).RepeatForever())
                .Build();
            sched.ScheduleJob(job, trigger);
            sched.Start();
            Console.ReadLine();
        }

3.Quartz.net中主要包括三个主要的对象:计划者(IScheduler)、工作任务(IJob)和触发器(ITrgger),我们可以在工作任务中添加我们需要定时执行的工作。

 public    class KeywordJob:IJob
    {
        public OA.IBLL.IKeywordCountService keywordService = new OA.BLL.KeywordCountService();
        public void Execute(IJobExecutionContext context)
        {
            keywordService.DeleteAll();
            keywordService.InsertAll();
        }
    }
原文地址:https://www.cnblogs.com/XZhao/p/7256960.html