亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

RediSearch加RedisJSON大于Elasticsearch的搜索存儲(chǔ)引擎

 更新時(shí)間:2022年07月07日 16:28:22   作者:macrozheng  
這篇文章主要為大家介紹了RediSearch加RedisJSON大于Elasticsearch的王炸使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

RedisMod簡(jiǎn)介

Redis是開(kāi)發(fā)中非常常用的內(nèi)存數(shù)據(jù)存儲(chǔ)中間件,之前基本上用它來(lái)做內(nèi)存存儲(chǔ)使用。最近發(fā)現(xiàn)Redis推出了很多增強(qiáng)模塊,例如通過(guò)RedisJSON可以支持原生JSON對(duì)象的存儲(chǔ),使用RediSearch可以作為搜索引擎使用,并且支持中文搜索!今天給大家?guī)?lái)RediSearch+RedisJSON作為搜索引擎的使用實(shí)踐,希望對(duì)大家有所幫助!

SpringBoot實(shí)戰(zhàn)電商項(xiàng)目mall(50k+star)地址:https://github.com/macrozheng/mall

首先介紹下RedisMod這個(gè)東西,它是一系列Redis的增強(qiáng)模塊。有了RedisMod的支持,Redis的功能將變得非常強(qiáng)大。目前RedisMod中包含了如下增強(qiáng)模塊:

  • RediSearch:一個(gè)功能齊全的搜索引擎;
  • RedisJSON:對(duì)JSON類型的原生支持;
  • RedisTimeSeries:時(shí)序數(shù)據(jù)庫(kù)支持;
  • RedisGraph:圖數(shù)據(jù)庫(kù)支持;
  • RedisBloom:概率性數(shù)據(jù)的原生支持;
  • RedisGears:可編程的數(shù)據(jù)處理;
  • RedisAI:機(jī)器學(xué)習(xí)的實(shí)時(shí)模型管理和部署。

安裝

首先我們需要安裝帶所有RedisMod的Redis,使用Docker來(lái)安裝非常方便的!

使用如下命令下載RedisMod的鏡像;

docker pull redislabs/redismod:preview

在容器中運(yùn)行RedisMod服務(wù)。

docker run -p 6379:6379 --name redismod \
-v /mydata/redismod/data:/data \
-d redislabs/redismod:preview

RedisJSON

有了RedisJSON模塊,Redis就可以存儲(chǔ)原生JSON類型數(shù)據(jù)了,通過(guò)它你可以很方便地訪問(wèn)JSON中的各個(gè)屬性,類似在MongoDB中那樣,下面我們就來(lái)體驗(yàn)下,這里我們將使用RedisInsight 來(lái)操作Redis。

首先通過(guò)JSON.SET命令向Redis中添加JSON類型鍵值對(duì),幾個(gè)商品對(duì)象數(shù)據(jù),由于JSON是樹(shù)形結(jié)構(gòu)的,使用$符號(hào)代表往JSON的根節(jié)點(diǎn)中添加數(shù)據(jù);

JSON.SET product:1 $ '{"id":1,"productSn":"7437788","name":"小米8","subTitle":"全面屏游戲智能手機(jī) 6GB+64GB 黑色 全網(wǎng)通4G 雙卡雙待","brandName":"小米","price":2699,"count":1}'
JSON.SET product:2 $ '{"id":2,"productSn":"7437789","name":"紅米5A","subTitle":"全網(wǎng)通版 3GB+32GB 香檳金 移動(dòng)聯(lián)通電信4G手機(jī) 雙卡雙待","brandName":"小米","price":649,"count":5}'
JSON.SET product:3 $ '{"id":3,"productSn":"7437799","name":"Apple iPhone 8 Plus","subTitle":"64GB 紅色特別版 移動(dòng)聯(lián)通電信4G手機(jī)","brandName":"蘋(píng)果","price":5499,"count":10}'

數(shù)據(jù)插入成功后,在RedisInsight中將看到如下信息,JSON數(shù)據(jù)支持格式化高亮顯示;

接下來(lái)可以通過(guò)JSON.GET命令獲取JSON類型鍵值對(duì)的值;

JSON.GET product:1

也可以只獲取值的指定屬性,在RedisJSON中,獲取JSON對(duì)象中的屬性時(shí)需要以.開(kāi)頭;

JSON.GET product:1 .name .subTitle

還可以通過(guò)JSON.TYPE命令來(lái)獲取JSON對(duì)象類型。

JSON.TYPE product:1 .

RediSearch

通過(guò)RediSearch模塊,Redis可以變成一個(gè)功能強(qiáng)大的全文搜索引擎,并且原生支持中文搜索,下面我們就來(lái)體驗(yàn)下!

使用RediSearch來(lái)搜索數(shù)據(jù)之前,我們得先創(chuàng)建下索引,建立索引的語(yǔ)法有點(diǎn)復(fù)雜,我們先來(lái)看下;

FT.CREATE {index}
  [ON {data_type}]
     [PREFIX {count} {prefix} [{prefix} ..]
     [LANGUAGE {default_lang}]
  SCHEMA {identifier} [AS {attribute}]
      [TEXT | NUMERIC | GEO | TAG ] [CASESENSITIVE]
      [SORTABLE] [NOINDEX]] ...

使用FT.CREATE命令可以建立索引,語(yǔ)法中的參數(shù)意義如下;

  • index:索引名稱;
  • data_type:建立索引的數(shù)據(jù)類型,目前支持JSON或者HASH兩種;
  • PREFIX:通過(guò)它可以選擇需要建立索引的數(shù)據(jù)前綴,比如PREFIX 1 "product:"表示為鍵中以product:為前綴的數(shù)據(jù)建立索引;
  • LANGUAGE:指定TEXT類型屬性的默認(rèn)語(yǔ)言,使用chinese可以設(shè)置為中文;
  • identifier:指定屬性名稱;
  • attribute:指定屬性別名;
  • TEXT | NUMERIC | GEO | TAG:這些都是屬性可選的類型;
  • SORTABLE:指定屬性可以進(jìn)行排序。

看了語(yǔ)法可能不太好理解,直接對(duì)之前的商品數(shù)據(jù)建立索引試試就懂了;

FT.CREATE productIdx ON JSON PREFIX 1 "product:" LANGUAGE chinese SCHEMA $.id AS id NUMERIC $.name AS name TEXT $.subTitle AS subTitle TEXT $.price AS price NUMERIC SORTABLE $.brandName AS brandName TAG

建立完索引后,我們就可以使用FT.SEARCH對(duì)數(shù)據(jù)進(jìn)行查看了,比如使用*可以查詢?nèi)浚?/p>

FT.SEARCH productIdx *

由于我們?cè)O(shè)置了price字段為SORTABLE,我們可以以price降序返回商品信息;

FT.SEARCH productIdx * SORTBY price DESC

還可以指定返回的字段;

FT.SEARCH productIdx * RETURN 3 name subTitle price

我們把brandName設(shè)置為了TAG類型,我們可以使用如下語(yǔ)句查詢品牌為小米蘋(píng)果的商品;

FT.SEARCH productIdx '@brandName:{小米 | 蘋(píng)果}'

由于priceNUMERIC類型,我們可以使用如下語(yǔ)句查詢價(jià)格在500~1000的商品;

FT.SEARCH productIdx '@price:[500 1000]'

還可以通過(guò)前綴進(jìn)行模糊查詢,類似于SQL中的LIKE,使用*表示;

FT.SEARCH productIdx '@name:小米*'

FT.SEARCH中直接指定搜索關(guān)鍵詞,可以對(duì)所有TEXT類型的屬性進(jìn)行全局搜索,支持中文搜索,比如我們搜索下包含黑色字段的商品;

FT.SEARCH productIdx '黑色'

當(dāng)然我們也可以指定搜索的字段,比如搜索副標(biāo)題中帶有紅色字段的商品;

FT.SEARCH productIdx '@subTitle:紅色'

通過(guò)FT.DROPINDEX命令可以刪除索引,如果加入DD選項(xiàng)的話,會(huì)連數(shù)據(jù)一起刪除;

FT.DROPINDEX productIdx

通過(guò)FT.INFO命令可以查看索引狀態(tài);

FT.INFO productIdx

RediSearch的搜索語(yǔ)法比較復(fù)雜,不過(guò)我們可以對(duì)比SQL來(lái)使用它,具體可以參考下表。

對(duì)比Elasticsearch

Redis官方曾公布了RediSearch與Elasticsearch的性能對(duì)比測(cè)試,大家可以看下。

索引能力

對(duì)Wikipedia的560萬(wàn)(5.3GB)文檔進(jìn)行索引,RediSearch耗時(shí)221s,Elasticsearch耗時(shí)349s,RediSearch快了58%!

查詢能力

數(shù)據(jù)建立索引后,使用32個(gè)客戶端對(duì)兩個(gè)單詞進(jìn)行檢索,RediSearch的吞吐量達(dá)到12.5K ops/sec,Elasticsearch的吞吐量為3.1K ops/sec,RediSearch比Elasticsearch要快4倍。同時(shí)RediSearch的延遲為8ms,而Elasticsearch為10ms,RediSearch延遲稍微低些!

總結(jié)

經(jīng)過(guò)這么多年的發(fā)展,Redis的功能也越來(lái)越強(qiáng)大了,它已經(jīng)不僅僅是個(gè)緩存工具了,更像是一個(gè)數(shù)據(jù)庫(kù)了。RediSearch給了我們實(shí)現(xiàn)搜索功能的另一個(gè)選擇,性能也非常不錯(cuò),大家如果做搜索相關(guān)功能的話可以考慮下它!

參考資料

官方文檔:https://developer.redis.com/howtos/redisjson/

參考手冊(cè):https://redis.io/docs/stack/search/

性能測(cè)試:https://redis.com/blog/search-benchmarking-redisearch-vs-elasticsearch/

以上就是RediSearch加RedisJSON大于Elasticsearch的王炸的詳細(xì)內(nèi)容,更多關(guān)于RediSearch RedisJSON的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • redis模糊批量刪除key的方法

    redis模糊批量刪除key的方法

    這篇文章主要介紹了redis模糊批量清除key的操作方法,包括命令行刪除和golang代碼刪除,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Redis 設(shè)置密碼無(wú)效問(wèn)題解決

    Redis 設(shè)置密碼無(wú)效問(wèn)題解決

    本文主要介紹了Redis 設(shè)置密碼無(wú)效問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 詳解Redis主從復(fù)制實(shí)踐

    詳解Redis主從復(fù)制實(shí)踐

    本文將演示主從復(fù)制如何配置、實(shí)現(xiàn)以及實(shí)現(xiàn)原理,Redis主從復(fù)制三大策略,全量復(fù)制、部分復(fù)制和立即復(fù)制。
    2021-05-05
  • Linux中設(shè)置Redis開(kāi)機(jī)啟動(dòng)的方法

    Linux中設(shè)置Redis開(kāi)機(jī)啟動(dòng)的方法

    這篇文章主要給大家介紹了關(guān)于Linux中設(shè)置Redis開(kāi)機(jī)啟動(dòng)的方法,主要包括在CentOS7.0系統(tǒng)和Debian 8.0系統(tǒng)下實(shí)現(xiàn)方法,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-04-04
  • 一文詳解如何停止/重啟/啟動(dòng)Redis服務(wù)

    一文詳解如何停止/重啟/啟動(dòng)Redis服務(wù)

    Redis是當(dāng)前比較熱門(mén)的NOSQL系統(tǒng)之一,它是一個(gè)key-value存儲(chǔ)系統(tǒng),這篇文章主要給大家介紹了關(guān)于如何停止/重啟/啟動(dòng)Redis服務(wù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • redis?分片集群搭建與使用教程

    redis?分片集群搭建與使用教程

    這篇文章主要介紹了redis?分片集群搭建與使用,本篇將以redis 分片集群為切入點(diǎn),從redis 分片集群的搭建開(kāi)始,詳細(xì)說(shuō)說(shuō)redis 分片集群相關(guān)的技術(shù)點(diǎn),需要的朋友可以參考下
    2022-06-06
  • 基于redis分布式鎖實(shí)現(xiàn)秒殺功能

    基于redis分布式鎖實(shí)現(xiàn)秒殺功能

    這篇文章主要為大家詳細(xì)介紹了基于redis分布式鎖實(shí)現(xiàn)秒殺功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 關(guān)于Redis未授權(quán)訪問(wèn)的問(wèn)題

    關(guān)于Redis未授權(quán)訪問(wèn)的問(wèn)題

    這篇文章主要介紹了Redis未授權(quán)訪問(wèn)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • Redis教程(十四):內(nèi)存優(yōu)化介紹

    Redis教程(十四):內(nèi)存優(yōu)化介紹

    這篇文章主要介紹了Redis教程(十四):內(nèi)存優(yōu)化介紹,本文講解了特殊編碼、BIT和Byte級(jí)別的操作、盡可能使用Hash等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • python中使用redis用法詳解

    python中使用redis用法詳解

    Redis擁有豐富的數(shù)據(jù)結(jié)構(gòu),擁有事務(wù)功能,保證命令的原子性。由于是內(nèi)存數(shù)據(jù)庫(kù),讀寫(xiě)非常高速,可達(dá)10w/s的評(píng)率,所以一般應(yīng)用于數(shù)據(jù)變化快、實(shí)時(shí)通訊、緩存等。這篇文章給大家講解一下Python如何使用Redis,并進(jìn)行相關(guān)的實(shí)戰(zhàn)操作。
    2022-12-12

最新評(píng)論