redis-redissearch临时笔记

官方文档

https://redis.io/docs/interact/search-and-query/

底层数据结构支持

HASH

FT.CREATE books-idx 
    ON HASH 
    PREFIX 1 book:details 
SCHEMA 
    title TEXT 
    categories TAG SEPARATOR ";"

SETbook:details :1 name "test data" tag_ids "1;2;3"

JSON

FT.CREATE itemIdx ON JSON PREFIX 1 item: SCHEMA $.name AS name TEXT $.tag_ids as tag_ids TAG SEPARATOR ","

JSON.SET item:1 $ '{"name":"小明","tag_ids":"1,2,3,4,5,6,13"}'

FT.SEARCH itemIdx '@tag_ids:{5}'

中文支持

 FT.ADD itemIdx item:6 1.0 LANGUAGE chinese FIELDS name "我爱广州小蛮腰" tag_ids "1,2,3,4,5,6,13"

 

误区

其实很多地方往往需要模糊搜索

 

可以搜索加上**  他会在倒排索引里面去匹配。感觉就像全表扫描了。走倒排索引又有误差

 

总结

优点

1.针对少量数据,大量IO(读写),可以放到redissearch构建搜索索引

缺点

针对大量数据放到redissearch感觉不合适,分词没有es灵活

 

我什么时候会选择redissearch

1.少量数据(redis内存支持情况) 大量读写io

2.一些高级查询,比如geo 查附近门店。构建es都引入一个中间件感觉不方便

总的来说数据库不支持的查询,redis支持,并且数据量不大的情况选择redissearch

关于倒排索引

其实倒排索引还是有局限性,很多后端场景是需要模糊查询,不需要分词查询就不上es或者redissearch了

 

posted @ 2023-11-09 11:15  意犹未尽  阅读(62)  评论(0编辑  收藏  举报