国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Redis官方搜索引擎來了,性能炸裂!

jf_ro2CN3Fa ? 來源:waynblog ? 2024-02-21 10:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

RediSearch 簡介

RediSearch 是一個 Redis 模塊,為 Redis 提供查詢、二級索引和全文搜索功能。

要使用 RediSearch 的功能,我們需要要先聲明一個 index(類似于 Elasticsearch 的索引)。然后就可以使用 RediSearch 的查詢語言來查詢該索引下的數據。

RediSearch 內部使用壓縮的倒排索引,所以可以用較低的內存占用來實現索引的快速構建。

目前 RediSearch 最新版支持的查詢功能也比較豐富了,除了基本的文本分詞還支持聚合統計、停用詞、同義詞、拼寫檢查、結果排序、標簽查詢、向量相似度查詢以及中文分詞等。

對比 Elasticsearch

基本硬件

f591b788-d059-11ee-a297-92fbcf53809c.png

數據源

f597dbd6-d059-11ee-a297-92fbcf53809c.png

RediSearch 配置

f59d903a-d059-11ee-a297-92fbcf53809c.png

Elasticsearch 配置

f5a6d76c-d059-11ee-a297-92fbcf53809c.png

版本

f5af12c4-d059-11ee-a297-92fbcf53809c.png

索引構建測試

在官方提供的索引構建測試中,RediSearch 用 221 秒的速度超過了 Elasticsearch 的 349 秒,領先 58%,

f5b4db00-d059-11ee-a297-92fbcf53809c.png

查詢性能測試

通過數據集導入索引數據后,官方使用運行在專用負載生成器服務器上的 32 個客戶端啟動了兩個詞的搜索查詢。

如下圖所示,RediSearch 的吞吐量達到了 12.5K ops/sec,而 Elasticsearch 的吞吐量只有了 3.1K ops/sec,快了 4 倍。此外 RediSearch 的延遲稍好一些,平均為 8 毫秒,而 Elasticsearch 為 10 毫秒。(ops/sec 每秒操作數)

f5c08bc6-d059-11ee-a297-92fbcf53809c.png

由此可見,RediSearch 在性能上對比 RediSearch 有比較大的優勢。

目前 RediSearch 已經更新到 2.0+ 版本,根據官方對于 RediSearch 2.0 版本介紹,與 RediSearch 1.6 相比,吞吐量和延遲相關的指標都提高了 2.4 倍。

RediSearch 安裝

對于目前最新的 RediSearch 2.0 版本來說,官方推薦直接使用 redis-stack-server 鏡像進行進行部署,也比較簡單,

dockerrun-d--nameredis-stack-server-p6379:6379redis/redis-stack-server:latest

設置登錄密碼

//設置登錄密碼
dockerrun-eREDIS_ARGS="--requirepassredis-stack"redis/redis-stack:latest

通過 redis-cli 連接查看 RediSearch 是否安裝了 search 模塊,

redis-cli-hlocalhost

>MODULElist
...
3)1)"name"
2)"search"
3)"ver"
4)"20809"
5)"path"
6)"/opt/redis-stack/lib/redisearch.so"
7)"args"
8)1)"MAXSEARCHRESULTS"
2)"10000"
3)"MAXAGGREGATERESULTS"
4)"10000"
...

索引操作

FT.CREATE 創建索引命令

>FT.CREATEidx:goodsonhashprefix1"goods:"languagechineseschemagoodsNametextsortable
"OK"

FT.CREATE:創建索引命令

idx:goods:索引名稱

on hash:索引關聯的數據類型,這里指定索引基于 hash 類型的源數據構建

prefix 1 "goods:":表示索引關聯的 hash 類型源數據前綴是 goods:

language chinese:表示支持中文語言分詞

schema goodsName text sortable:表示字段定義,goodsName 表示元數據屬性名,text 表示字段類型 sortable 表示該字段可以用于排序

添加索引時,直接使用 hset 命令添加一個 key 前綴是 "goods:" 的源數據。如下,

hsetgoods:1001goodsName小米手機
hsetgoods:1002goodsName華為手機

FT.SEARCH 查詢索引

>FT.SEARCHidx:goods1"手機"
1)"2"
2)"goods:1001"
3)1)"goodsName"
2)"xe5xb0x8fxe7xb1xb3xe6x89x8bxe6x9cxba"
4)"goods:1002"
5)1)"goodsName"
2)"xe5x8dx8exe4xb8xbaxe6x89x8bxe6x9cxba"

FT.INFO 查詢指定名稱索引信息

>FT.INFOidx:goods
1)"index_name"
2)"idx:goods1"
3)"index_options"
4)(emptylistorset)
5)"index_definition"
6)1)"key_type"
2)"HASH"
3)"prefixes"
4)1)"goods:"
5)"default_language"
6)"chinese"
7)"default_score"
8)"1"
7)"attributes"
8)1)1)"identifier"
2)"goodsName"
3)"attribute"
4)"goodsName"
5)"type"
6)"TEXT"
7)"WEIGHT"
8)"1"
9)"SORTABLE"
...

FT.INFO 查詢指定名稱的索引信息

FT.DROPINDEX 刪除索引名稱

>FT.DROPINDEXidx:goods1
"OK"

FT.DROPINDEX 刪除指定名稱索引,不會刪除 hash 類型的源數據

如果需要刪除索引數據,直接使用 del 命令刪除索引關聯的源數據即可。

Java 使用 RediSearch

對于 Java 項目直接選用 Jedis4.0 以上版本就可以使用 RediSearch 提供的搜索功能,Jedis 在 4.0 以上版本自動支持 RediSearch,編寫 Jedis 連接 RedisSearch 測試用例,用 RedisSearch 命令創建如下,

Jedis 創建 RediSearch 客戶端

@Bean
publicUnifiedJedisunifiedJedis(GenericObjectPoolConfigjedisPoolConfig){
UnifiedJedisclient;
if(StringUtils.isNotEmpty(password)){
client=newJedisPooled(jedisPoolConfig,host,port,timeout,password,database);
}else{
client=newJedisPooled(jedisPoolConfig,host,port,timeout,null,database);
}
returnclient;
}

Jedis 創建索引

Schemaschema=newSchema()
.addSortableTextField("goodsName",1.0)
.addSortableTagField("tag","|");
IndexDefinitionrule=newIndexDefinition(IndexDefinition.Type.HASH)
.setPrefixes("idx:goods")
.setLanguage("chinese");#設置支持中文分詞
client.ftCreate(idxName,
IndexOptions.defaultOptions().setDefinition(rule),
schema);

Jedis 添加索引源數據

publicbooleanaddGoodsIndex(StringkeyPrefix,Goodsgoods){
Maphash=MyBeanUtil.toMap(goods);
hash.put("_language","chinese");
client.hset("idx:goods"+goods.getGoodsId(),MyBeanUtil.toMap(goods));
returntrue;
}

Jedis 中文查詢

publicSearchResultsearch(StringgoodsIdxName,SearchObjVOsearchObjVO,Pagepage){
//查詢關鍵字
Stringkeyword=searchObjVO.getKeyword();
StringqueryKey=String.format("@goodsName:(%s)",keyword);
Queryq=newQuery(queryKey);
Stringsort=searchObjVO.getSidx();
Stringorder=searchObjVO.getOrder();
//查詢是否排序
if(StringUtils.isNotBlank(sort)){
q.setSortBy(sort,Constants.SORT_ASC.equals(order));

}
//設置中文分詞查詢
q.setLanguage("chinese");
//設置分頁
q.limit((int)page.offset(),(int)page.getSize());
//返回查詢結果
returnclient.ftSearch(goodsIdxName,q);
}

最后聊兩句

RediSearch 是這幾年新出的一個全文搜索引擎,借助于 Redis 的成功,RediSearch 一出場就獲得了較高的關注度。

目前來看,我個人使用 RediSearch 作為項目的全文搜索引擎已經夠用了,它有易于安裝、索引占用內存低、查詢速度快等許多優點。不過在對 Redis 集群的支持上,RediSearch 目前只針對 Redis 企業版有解決方案,開源版還沒有,這一點需要告訴大家。

如果想要在生產環境大規模使用,我還是不太建議的。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 生成器
    +關注

    關注

    7

    文章

    322

    瀏覽量

    22707
  • Hash
    +關注

    關注

    0

    文章

    33

    瀏覽量

    13682
  • Redis
    +關注

    關注

    0

    文章

    392

    瀏覽量

    12185

原文標題:換掉ES!Redis官方搜索引擎來了,性能炸裂!

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    邁富時GEO服務:技術驅動AI搜索時代的企業增長新引擎

    導語: 隨著DeepSeek、豆包、文心一言等生成式AI搜索引擎的快速普及,用戶獲取信息的方式正從傳統"鏈接點擊"轉向"AI直接對話"。在這場深刻的信息檢索范式變革中,企業如何讓品牌內容被AI系統
    的頭像 發表于 01-17 21:20 ?258次閱讀

    【產品應用】儲能網關EM-1000與EM-1000G的Redis性能對比

    視頻推薦隨著儲能控制系統智能化發展,對實時處理和高速緩存需求提升。本測試對EM-1000與EM-1000G的Redis性能進行對比,評估其在吞吐、響應與穩定性上的差異,為客戶提供精準硬件選型依據
    的頭像 發表于 12-02 11:39 ?328次閱讀
    【產品應用】儲能網關EM-1000與EM-1000G的<b class='flag-5'>Redis</b><b class='flag-5'>性能</b>對比

    5分鐘了解SEO優化服務器對網站加載速度的影響

    一個為SEO優化過的服務器,能顯著提升網站性能,從而在搜索引擎排名中占據有利位置。
    的頭像 發表于 12-02 10:27 ?331次閱讀

    根據標題獲取商品鏈接評論接口的技術實現

    ; B(搜索引擎API調用) B --?> C{鏈接匹配度驗證} C --?>|匹配成功| D[獲取商品ID] C --?>|匹配失敗| E[人工干預校準] D --?> F
    的頭像 發表于 10-20 16:03 ?658次閱讀
    根據標題獲取商品鏈接評論接口的技術實現

    aicube的n卡gpu索引該如何添加?

    請問有人知道aicube怎樣才能讀取n卡的gpu索引呢,我已經安裝了cuda和cudnn,在全局的py里添加了torch,能夠調用gpu,當還是只能看到默認的gpu0,顯示不了gpu1,gpu0是集顯,訓練速度太感人了 你只有一塊英偉達的卡,aicube不支持AMD的顯卡,所以
    發表于 07-25 08:18

    Redis集群部署配置詳解

    Redis集群是一種分布式Redis解決方案,通過數據分片和主從復制實現高可用性和橫向擴展。集群將整個數據集分割成16384個哈希槽(hash slots),每個節點負責一部分槽位。
    的頭像 發表于 07-17 11:04 ?979次閱讀

    Redis集群部署與性能優化實戰

    Redis作為高性能的內存數據庫,在現代互聯網架構中扮演著關鍵角色。作為運維工程師,掌握Redis的部署、配置和優化技能至關重要。本文將從實戰角度出發,詳細介紹Redis集群的搭建、
    的頭像 發表于 07-08 17:56 ?850次閱讀

    【經驗分享】在Omni3576上編譯Redis-8.0.2源碼,并安裝及性能測試

    本文首先介紹Redis是什么,然后介紹如何在Omni3576上編譯Redis-8.0.2源碼,以及從源碼編譯、安裝Redis,最后介紹如何在Omni3576上運行Redis
    的頭像 發表于 06-05 08:05 ?977次閱讀
    【經驗分享】在Omni3576上編譯<b class='flag-5'>Redis</b>-8.0.2源碼,并安裝及<b class='flag-5'>性能</b>測試

    地平線余凱談AI時代產品方法論

    互聯網時代,商業邏輯始終圍繞“連接”與“理解人”展開。從搜索引擎、社交平臺再到短視頻應用,都在通過用戶行為數據揣摩人類偏好,優化服務體驗。
    的頭像 發表于 06-03 11:44 ?950次閱讀

    【幸狐Omni3576邊緣計算套件試用體驗】Redis最新8.0.2版本源碼安裝及性能測試

    本文首先介紹Redis是什么,然后介紹如何在Omni3576上編譯Redis-8.0.2源碼,以及從源碼編譯、安裝Redis,最后介紹如何在Omni3576上運行Redis
    發表于 06-03 01:28

    Redis 8 向量搜索實測:輕松擴展至 10 億向量

    艾體寶Redis 8 向量搜索實測輕松支持 10 億向量,仍保持低延遲與高吞吐。中位延遲僅200毫秒,90%精確度;處理50并發搜索請求中位延遲僅1.3秒,95%精確度。
    的頭像 發表于 05-13 14:00 ?740次閱讀
    <b class='flag-5'>Redis</b> 8 向量<b class='flag-5'>搜索</b>實測:輕松擴展至 10 億向量

    Redis 再次開源!

    “ ?Redis 現已采用 AGPLv3 開源許可證。? ” Redis CEO 的 Blog 以下是 Redis CEO Rowan Trollope 的 Blog: 像 AWS 和 GCP 這樣
    的頭像 發表于 05-06 18:26 ?928次閱讀

    RAKsmart服務器SEO優化優勢分析

    在RAKsmart服務器上搭建SEO網站,可以借助其基礎設施和服務特性,從技術層面優化搜索引擎排名。以下是具體優勢及分析,主機推薦小編為您整理發布RAKsmart服務器SEO優化優勢分析。
    的頭像 發表于 04-22 10:12 ?663次閱讀

    redis三種集群方案詳解

    Redis中提供的集群方案總共有三種(一般一個redis節點不超過10G內存)。
    的頭像 發表于 03-31 10:46 ?1529次閱讀
    <b class='flag-5'>redis</b>三種集群方案詳解

    BK1661 單頻多模 低功耗定位芯片

    GNSS部分 - 120 個跟蹤通道以及專用的搜索引擎 - L1頻點支持GPS L1, Beidou B1, Galileo E1, QZSS L1, GLONASS G1 - 冷啟動靈敏度
    發表于 03-10 09:18