溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

RedisMod怎么安裝和使用

發(fā)布時間:2022-07-08 09:24:52 來源:億速云 閱讀:578 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“RedisMod怎么安裝和使用”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

    RedisMod簡介

    Redis是開發(fā)中非常常用的內(nèi)存數(shù)據(jù)存儲中間件,之前基本上用它來做內(nèi)存存儲使用。最近發(fā)現(xiàn)Redis推出了很多增強模塊,例如通過RedisJSON可以支持原生JSON對象的存儲,使用RediSearch可以作為搜索引擎使用,并且支持中文搜索!

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

    • RediSearch:一個功能齊全的搜索引擎;

    • RedisJSON:對JSON類型的原生支持;

    • RedisTimeSeries:時序數(shù)據(jù)庫支持;

    • RedisGraph:圖數(shù)據(jù)庫支持;

    • RedisBloom:概率性數(shù)據(jù)的原生支持;

    • RedisGears:可編程的數(shù)據(jù)處理;

    • RedisAI:機器學習的實時模型管理和部署。

    安裝

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

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

    docker pull redislabs/redismod:preview

    在容器中運行RedisMod服務。

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

    RedisJSON

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

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

    JSON.SET product:1 $ '{"id":1,"productSn":"7437788","name":"小米8","subTitle":"全面屏游戲智能手機 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 香檳金 移動聯(lián)通電信4G手機 雙卡雙待","brandName":"小米","price":649,"count":5}'
    JSON.SET product:3 $ '{"id":3,"productSn":"7437799","name":"Apple iPhone 8 Plus","subTitle":"64GB 紅色特別版 移動聯(lián)通電信4G手機","brandName":"蘋果","price":5499,"count":10}'

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

    RedisMod怎么安裝和使用

    接下來可以通過JSON.GET命令獲取JSON類型鍵值對的值;

    JSON.GET product:1

    RedisMod怎么安裝和使用

    也可以只獲取值的指定屬性,在RedisJSON中,獲取JSON對象中的屬性時需要以.開頭;

    JSON.GET product:1 .name .subTitle

    RedisMod怎么安裝和使用

    還可以通過JSON.TYPE命令來獲取JSON對象類型。

    JSON.TYPE product:1 .

    RedisMod怎么安裝和使用

    RediSearch

    通過RediSearch模塊,Redis可以變成一個功能強大的全文搜索引擎,并且原生支持中文搜索,下面我們就來體驗下!

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

    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命令可以建立索引,語法中的參數(shù)意義如下;

    • index:索引名稱;

    • data_type:建立索引的數(shù)據(jù)類型,目前支持JSON或者HASH兩種;

    • PREFIX:通過它可以選擇需要建立索引的數(shù)據(jù)前綴,比如PREFIX 1 "product:"表示為鍵中以product:為前綴的數(shù)據(jù)建立索引;

    • LANGUAGE:指定TEXT類型屬性的默認語言,使用chinese可以設置為中文;

    • identifier:指定屬性名稱;

    • attribute:指定屬性別名;

    • TEXT | NUMERIC | GEO | TAG:這些都是屬性可選的類型;

    • SORTABLE:指定屬性可以進行排序。

    看了語法可能不太好理解,直接對之前的商品數(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對數(shù)據(jù)進行查看了,比如使用*可以查詢?nèi)浚?/p>

    FT.SEARCH productIdx *

    RedisMod怎么安裝和使用

    由于我們設置了price字段為SORTABLE,我們可以以price降序返回商品信息;

    FT.SEARCH productIdx * SORTBY price DESC

    RedisMod怎么安裝和使用

    還可以指定返回的字段;

    FT.SEARCH productIdx * RETURN 3 name subTitle price

    RedisMod怎么安裝和使用

    我們把brandName設置為了TAG類型,我們可以使用如下語句查詢品牌為小米蘋果的商品;

    FT.SEARCH productIdx '@brandName:{小米 | 蘋果}'

    RedisMod怎么安裝和使用

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

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

    RedisMod怎么安裝和使用

    還可以通過前綴進行模糊查詢,類似于SQL中的LIKE,使用*表示;

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

    RedisMod怎么安裝和使用

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

    FT.SEARCH productIdx '黑色'

    RedisMod怎么安裝和使用

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

    FT.SEARCH productIdx '@subTitle:紅色'

    RedisMod怎么安裝和使用

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

    FT.DROPINDEX productIdx

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

    FT.INFO productIdx

    RedisMod怎么安裝和使用

    RediSearch的搜索語法比較復雜,不過我們可以對比SQL來使用它,具體可以參考下表。

    RedisMod怎么安裝和使用

    對比Elasticsearch

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

    索引能力

    對Wikipedia的560萬(5.3GB)文檔進行索引,RediSearch耗時221s,Elasticsearch耗時349s,RediSearch快了58%!

    RedisMod怎么安裝和使用

    查詢能力

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

    RedisMod怎么安裝和使用

    “RedisMod怎么安裝和使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI