在python中非关系型数据库redis的自定义模糊查询

我们的印象中非关系型数据库要做模糊查询并不简单,当前我做的CMDB项目恰好有这样的一个需求,而且这个模糊查询要能够进行多条件的联合查询,那么,我们首先要考虑的是多条件联合查询,说到这里我想先说说个人的编码习惯,任何语言无非是在懂这门语言的前提下进行逻辑思维的较量,我习惯于进行在纸上或者黑板上对需求进行简单的分析,只要逻辑清楚了,编码就不那么难了,首先我县说一下关于非关系型的多条件查询,

在python中非关系型数据库redis的自定义模糊查询_第1张图片

在这个流程图中非关系型的数据过滤不同于关系型的数据,可以通过filter直接进行多条件的“where”筛选,而是需要进行手动写顾虑方式,并且本身不具备递进查询关系,只能进行一次多条件查询

第二,关于模糊查询,我们网上找不到关于非关系型模糊查询很好的包或者开源代码,但是根据我的代码习惯进行分析时,我们就不难发现其实对于模糊查询无非是对于不完整条件的全数据源的遍历,对于关系型的数据,因为其关系型特性和具备好多已经写好的包,所以比较方便,但是,同里对于数据量100万级以内,并发量不高的开发需求,我们可以手动进行这样的遍历,其逻辑就是每次对边数据源从开始到最后,哪一个片段和给定的不完整条件相等,由于我开发的是银行项目,不能进行代码的拷贝,所以给大家写一个比较易懂的demo:

for i in range(len(数据源列表)):

      for j in range(i,len(数据源列表)):

           if  数据源[i:j+1] == key:

                list_demo.append(数据源列表[i])

这里的key代表条件,多条件可以通过多写几行,或者进行再次遍历都可以,数据源列表代表从redis获取整合后的数据列,list_demo代表临时存储筛选后的数据保存的一个列表

如有问题,请留言

 

 

 

你可能感兴趣的:(在python中非关系型数据库redis的自定义模糊查询)