之前用grails插件实现的版本跟grails耦合太强,不适合于单独运行。另外用python实现了一个版本。
项目地址 https://github.com/isoloist/redis-search-python。
redis_search_test.py 简单介绍了如何使用。
在这里先介绍下我遇到的场景。在Mysql中有大于一百万条记录需要初始化进redis,并提供前缀搜索。在grails的bootstrap中执行,这个过程太漫长了,需要4-5个小时,而且影响应用的正常启动。改为用python实现后,可以直接在服务器上单独运行python脚本来完成这件事情。由于python的多线程对多核CPU的利用率低下,在尝试多线程后又放弃了这种做法。如果你希望用python脚本为大量数据建立redis索引,建议开启多个python进程,可以充分利用多核CPU的运算能力。在我的测试环境6核32G内存的服务器上,5个进程只需要10分钟就能为40万条数据记录建立redis索引。PS:redis的pipeline对批量写入性能提升非常明显。