一.热词统计
方案一:
设计一个表: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(); } }
时间: 2024-10-13 07:21:15