原文:
基于Redis缓存几十万条记录的快速模糊检索的功能实现(c#)
在开发一套大型的信息系统中,发现很多功能需要按公司查询,各个模块在实现时都是直接查数据库进行模糊检索,虽然对表进行向各个应用的库中进行了同步,但是在使用中发现,模糊检索公司时还是比较卡,原始的查询数据库实现方法:
var organizeManager = new BaseOrganizeManager(DbHelperFactory.GetHelper(BaseSystemInfo.BusinessDbType, BaseSystemInfo.BusinessDbConnection)); if (string.IsNullOrEmpty(key)) { return null; } key = DbLogic.SqlSafe(key); var where = "(" + BaseOrganizeEntity.FieldFullName + " LIKE'%" + key + "%' OR " + BaseOrganizeEntity.FieldCode + " LIKE '%" + key + "%' OR " + BaseOrganizeEntity.FieldSimpleSpelling + " LIKE '%" + key + "%' OR " + BaseOrganizeEntity.FieldQuickQuery + " LIKE '%" + key + "%') AND " + BaseOrganizeEntity.FieldDeletionStateCode + " = 0 "; var items = organizeManager.GetList2<BaseOrganizeEntity>(where, 20, " Id desc"); if (returnId) { returnList = items.Select(t => new SuggestEntity(t.FullName, t.Id)).ToList(); returnList = items.Select(t => new SuggestEntity(t.FullName + " " + t.Code, t.Id)).ToList(); } else { if (showCode) { returnList = items.Select(t => new SuggestEntity(t.FullName, t.Code)).ToList(); } else { returnList = items.Select(t => new SuggestEntity(t.FullName, t.FullName)).ToList(); } } return returnList;
为了提高用户体验,对公司的模糊检索使用了Redis缓存,按照以下原则:
1:读取最少的数据;
2:网络传输最少的数据;
3:所有的