使用 Redis 实现一个轻量级的搜索引擎

本文介绍了如何利用 Redis 的数据结构来实现一个轻量级的搜索引擎。从 SQL 性能优化到使用 Redis 存储预计算的子结果集,通过集合和有序集合操作提高查询速度,实现了高效搜索。同时,文章提及了 Redis 在分页查询中的应用,以及作者的个人技术成长经历。
摘要由CSDN通过智能技术生成

于是乎就写出了下面这段代码(这里以 MYSQL 为例):

select … from table_1

left join table_2

left join table_3

left join (select … from table_x where …) tmp_1

where …

order by …

limit m,n

代码在测试环境跑了一把,结果好像都匹配上了,于是准备上预发。这一上预发,问题就开始暴露出来。

预发为了尽可能的逼真线上环境,所以数据量自然而然要比测试大的多。所以这么一个复杂的 SQL,它的执行效率可想而知。测试同学果断把小A的代码给打了回来。

实现2

总结了小A失败的教训,小B开始对SQL进行了优化,先是通过了explain关键字进行SQL性能分析,对该加索引的地方都加上了索引。同时将一条复杂SQL拆分成了多条SQL,计算结果在程序内存中进行计算。

伪代码如下:

$result_1 = query(‘select … from table_1 where …’);

$result_2 = query(‘select … from table_2 where …’);

$result_3 = query(‘select … from table_3 where …’);

r e s u l t   =   a r r a y i n t e r s e c t ( result 

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值