欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言操作RediSearch進行搜索方法示例詳解

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

引言

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

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

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

docker-compose方式安裝

新建docker-compose.yml文件,內容如下:

# 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", "春眠不覺曉,處處聞啼鳥。夜來風雨聲,花落知多少。")
    doc2 := redisearch.NewDocument("doc2", 1.0)
    doc2.Set("title", "春夜喜雨").Set("content", "好雨知時節(jié),當春乃發(fā)生。隨風潛入夜,潤物細無聲。")
    doc3 := redisearch.NewDocument("doc3", 1.0)
    doc3.Set("title", "春夜洛城聞笛").Set("content", "誰家玉笛暗飛聲,散入春風滿洛城。此夜曲中聞折柳,何人不起故園情。")
    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個文檔。接下來,我們分別搜索了 瀑布 和 春,并測試了搜索結果。

RediSearch使用場景

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

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

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

參考資料

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

相關文章

  • Redis的常用命令小結

    Redis的常用命令小結

    本文主要介紹了Redis的常用命令小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • redis-cli創(chuàng)建redis集群的實現(xiàn)

    redis-cli創(chuàng)建redis集群的實現(xiàn)

    本文主要介紹了redis-cli創(chuàng)建redis集群的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-06-06
  • Redis所實現(xiàn)的Reactor模型設計方案

    Redis所實現(xiàn)的Reactor模型設計方案

    這篇文章主要介紹了Redis所實現(xiàn)的Reactor模型,本文將帶領讀者從源碼的角度來查看redis關于reactor模型的設計,需要的朋友可以參考下
    2024-06-06
  • 在redisCluster中模糊獲取key方式

    在redisCluster中模糊獲取key方式

    這篇文章主要介紹了在redisCluster中模糊獲取key方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • redis分布式ID解決方案示例詳解

    redis分布式ID解決方案示例詳解

    這篇文章主要為大家介紹了redis分布式ID解決方案示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 淺談內存耗盡后Redis會發(fā)生什么

    淺談內存耗盡后Redis會發(fā)生什么

    這篇文章主要介紹了淺談內存耗盡后Redis會發(fā)生什么,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Redis批量生成數(shù)據(jù)的實現(xiàn)

    Redis批量生成數(shù)據(jù)的實現(xiàn)

    本文主要介紹了Redis批量生成數(shù)據(jù)的實現(xiàn),主要介紹了兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Redis讀寫分離搭建的完整步驟

    Redis讀寫分離搭建的完整步驟

    為滿足讀多寫少的業(yè)務場景.最大化節(jié)約用戶成本.云數(shù)據(jù)庫Redis版推出了讀寫分離規(guī)格,為用戶提供透明、高可用、高性能、高靈活的讀寫分離服務,這篇文章主要給大家介紹了關于Redis讀寫分離搭建的相關資料,需要的朋友可以參考下
    2021-09-09
  • Redis客戶端工具之RedisInsight的下載方式

    Redis客戶端工具之RedisInsight的下載方式

    RedisInsight是Redis官方提供的圖形化客戶端工具,下載步驟包括訪問Redis官網(wǎng)、選擇RedisInsight、下載鏈接、注冊信息、安裝并測試連接
    2025-03-03
  • redis批量遷移key的實例

    redis批量遷移key的實例

    我們知道m(xù)igrate 命令可以遷移redis的多個key,但是如果redis的key有非常多,就不好解決了,本文主要介紹了redis批量遷移key的實例,具有一定的參考價值,感興趣的可以了解一下
    2025-04-04

最新評論