最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言操作RediSearch進(jìn)行搜索方法示例詳解

 更新時間:2023年12月18日 14:13:22   作者:guoqiang  
這篇文章主要為大家介紹了Go語言操作RediSearch進(jìn)行搜索方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

RediSearch是一個支持搜索功能的redis模塊。本文對此模塊進(jìn)行了介紹,并用go語言實現(xiàn)了一個簡單示例。

RediSearch提供了查詢、二級索引、全文索引功能。你需要先在相關(guān)Redis條目上建立索引,然后才能使用RediSearch進(jìn)行查詢。

RediSearch使用了壓縮算法和倒序索引算法,使得其在性能和內(nèi)存占用上都有很好的表現(xiàn)。它可以支持精確匹配、模糊匹配、數(shù)字過濾等功能。

docker-compose方式安裝

新建docker-compose.yml文件,內(nèi)容如下:

# redis-stack
version: '3.1'
services:
  redis-stack:
    image: redis/redis-stack-server:latest
    ports:
      - 6380:6379
    volumes:
      - ./data:/data

執(zhí)行命令來啟動容器:

docker-compose up -d

用Go語言操作RediSearch

redissearch-go是一個支持RediSearch的go語言客戶端,使用起來很簡單。下面寫一個簡單的示例:

func TestRedisSearch(t *testing.T) {
    // 連接
    conn := redisearch.NewClient("localhost:6380", "tangshi")
    // 定義索引
    sc := redisearch.NewSchema(redisearch.DefaultOptions).AddField(redisearch.NewTextFieldOptions("title", redisearch.TextFieldOptions{Weight: 5.0, Sortable: true})).AddField(redisearch.NewTextField("content"))
    // 刪除現(xiàn)有索引
    conn.Drop()
    // 創(chuàng)建索引
    err := conn.CreateIndex(sc)
    assert.Equal(t, err, nil)
    // 添加文檔
    doc1 := redisearch.NewDocument("doc1", 1.0)
    doc1.Set("title", "春曉").Set("content", "春眠不覺曉,處處聞啼鳥。夜來風(fēng)雨聲,花落知多少。")
    doc2 := redisearch.NewDocument("doc2", 1.0)
    doc2.Set("title", "春夜喜雨").Set("content", "好雨知時節(jié),當(dāng)春乃發(fā)生。隨風(fēng)潛入夜,潤物細(xì)無聲。")
    doc3 := redisearch.NewDocument("doc3", 1.0)
    doc3.Set("title", "春夜洛城聞笛").Set("content", "誰家玉笛暗飛聲,散入春風(fēng)滿洛城。此夜曲中聞?wù)哿稳瞬黄鸸蕡@情。")
    doc4 := redisearch.NewDocument("doc4", 1.0)
    doc4.Set("title", "江雪").Set("content", "千山鳥飛絕,萬徑人蹤滅。孤舟蓑笠翁,獨釣寒江雪。")
    doc5 := redisearch.NewDocument("doc5", 1.0)
    doc5.Set("title", "望廬山瀑布").Set("content", "日照香爐生紫煙,遙看瀑布掛前川。飛流直下三千尺,疑是銀河落九天。")
    // 為索引添加文檔
    err = conn.IndexOptions(redisearch.DefaultIndexingOptions, []redisearch.Document{doc1, doc2, doc3, doc4, doc5}...)
    assert.Equal(t, err, nil)
    time.Sleep(time.Millisecond * 100)
    // 搜索 瀑布
    docs, total, err := conn.Search(redisearch.NewQuery("*瀑布*").Limit(0, 5).SetReturnFields("title", "content"))
    assert.Equal(t, err, nil)
    assert.Equal(t, total, 1)
    assert.Equal(t, docs[0].Properties["title"], "望廬山瀑布")
    // 搜索 春
    docs, total, err = conn.Search(redisearch.NewQuery("*春*").Limit(0, 5).SetReturnFields("title", "content").SetSortBy("title", true))
    assert.Equal(t, err, nil)
    assert.Equal(t, total, 3)
    assert.Equal(t, docs[0].Properties["title"], "春夜喜雨")
    for _, item := range docs {
        t.Log(item.Properties["title"], item.Properties["content"])
    }
}

在上面的代碼中,我們創(chuàng)建了一個名為tangshi的索引,然后添加了5個文檔。接下來,我們分別搜索了 瀑布 和 春,并測試了搜索結(jié)果。

RediSearch使用場景

和Eleasticsearch、Solr等搜索引擎相比,RediSearch的功能還是比較簡單的,它并不是要替代這些專業(yè)的搜索引擎,并不適用于所有場景。
它主要適用于以下一些場景:

  • 數(shù)據(jù)量不大,所有索引內(nèi)容可以被放進(jìn)內(nèi)存中。由于redis的數(shù)據(jù)都存儲在內(nèi)存中,如果索引數(shù)據(jù)內(nèi)容過大,可能不適合使用RediSearch。
  • Ephemeral indexing,即臨時索引,索引內(nèi)容不需要長期存儲。

如果有想詳細(xì)了解的,可以查閱一下下面列出的參考資料。

參考資料

以上就是Go語言操作RediSearch進(jìn)行搜索方法示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Go操作RediSearch搜索的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解讀redis?slaveof命令執(zhí)行后為什么需要清庫重新同步

    解讀redis?slaveof命令執(zhí)行后為什么需要清庫重新同步

    這篇文章主要介紹了redis?slaveof命令執(zhí)行后為什么需要清庫重新同步,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 如何高效使用Redis作為LRU緩存

    如何高效使用Redis作為LRU緩存

    這篇文章主要介紹了如何高效使用Redis作為LRU緩存,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Redis設(shè)置永久密碼方式

    Redis設(shè)置永久密碼方式

    找到Redis安裝目錄下的redis.windows.conf文件,搜索并設(shè)置requirepass參數(shù)為自定義密碼,保存修改后重啟服務(wù),以增強安全性,此為個人經(jīng)驗,供參考
    2025-07-07
  • Linux安裝Redis、后臺運行、系統(tǒng)自啟動的設(shè)置方法

    Linux安裝Redis、后臺運行、系統(tǒng)自啟動的設(shè)置方法

    Redis是用C語言編寫的開源免費的高性能的分布式內(nèi)存數(shù)據(jù)庫,基于內(nèi)存運行并支持持久化的NoSQL數(shù)據(jù)庫。這篇文章主要介紹了Linux安裝Redis、后臺運行、系統(tǒng)自啟動,需要的朋友可以參考下
    2020-01-01
  • Redis教程(十四):內(nèi)存優(yōu)化介紹

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

    這篇文章主要介紹了Redis教程(十四):內(nèi)存優(yōu)化介紹,本文講解了特殊編碼、BIT和Byte級別的操作、盡可能使用Hash等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • redis主從切換導(dǎo)致的數(shù)據(jù)丟失與陷入只讀狀態(tài)故障解決方案

    redis主從切換導(dǎo)致的數(shù)據(jù)丟失與陷入只讀狀態(tài)故障解決方案

    這篇文章主要介紹了redis主從切換導(dǎo)致的數(shù)據(jù)丟失與陷入只讀狀態(tài)故障解決方案的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • ?Redis 串行生成順序編碼的方法實現(xiàn)

    ?Redis 串行生成順序編碼的方法實現(xiàn)

    本文主要介紹了?Redis 串行生成順序編碼的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • redis的持久化和緩存機制解讀

    redis的持久化和緩存機制解讀

    這篇文章主要介紹了redis的持久化和緩存機制,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • redis熱key問題怎樣解決

    redis熱key問題怎樣解決

    這篇文章主要介紹了redis熱key問題怎樣解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Redis哨兵Sentinel的具體使用

    Redis哨兵Sentinel的具體使用

    本文主要介紹了Redis哨兵Sentinel的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-08-08

最新評論

玉树县| 洞头县| 屏边| 克山县| 万年县| 元氏县| 乌兰县| 博爱县| 闸北区| 沐川县| 东乌| 高唐县| 新疆| 龙海市| 桐梓县| 渭南市| 陈巴尔虎旗| 汉寿县| 玉龙| 射阳县| 辽源市| 荣成市| 德保县| 保靖县| 长寿区| 布拖县| 九江市| 奈曼旗| 兰坪| 鄂托克前旗| 和龙市| 营口市| 温宿县| 三门峡市| 宝鸡市| 巴塘县| 枝江市| 宽甸| 旺苍县| 沁源县| 伊川县|