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

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

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

引言

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

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

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

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í)行命令來(lái)啟動(dòng)容器:

docker-compose up -d

用Go語(yǔ)言操作RediSearch

redissearch-go是一個(gè)支持RediSearch的go語(yǔ)言客戶端,使用起來(lái)很簡(jiǎn)單。下面寫一個(gè)簡(jiǎn)單的示例:

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", "春眠不覺(jué)曉,處處聞啼鳥(niǎo)。夜來(lái)風(fēng)雨聲,花落知多少。")
    doc2 := redisearch.NewDocument("doc2", 1.0)
    doc2.Set("title", "春夜喜雨").Set("content", "好雨知時(shí)節(jié),當(dāng)春乃發(fā)生。隨風(fēng)潛入夜,潤(rùn)物細(xì)無(wú)聲。")
    doc3 := redisearch.NewDocument("doc3", 1.0)
    doc3.Set("title", "春夜洛城聞笛").Set("content", "誰(shuí)家玉笛暗飛聲,散入春風(fēng)滿洛城。此夜曲中聞?wù)哿?,何人不起故園情。")
    doc4 := redisearch.NewDocument("doc4", 1.0)
    doc4.Set("title", "江雪").Set("content", "千山鳥(niǎo)飛絕,萬(wàn)徑人蹤滅。孤舟蓑笠翁,獨(dú)釣寒江雪。")
    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)建了一個(gè)名為tangshi的索引,然后添加了5個(gè)文檔。接下來(lái),我們分別搜索了 瀑布 和 春,并測(cè)試了搜索結(jié)果。

RediSearch使用場(chǎng)景

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

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

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

參考資料

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

相關(guān)文章

  • Redis的常用命令小結(jié)

    Redis的常用命令小結(jié)

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

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

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

    Redis所實(shí)現(xiàn)的Reactor模型設(shè)計(jì)方案

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

    在redisCluster中模糊獲取key方式

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

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

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

    淺談內(nèi)存耗盡后Redis會(huì)發(fā)生什么

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

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

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

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

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

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

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

    redis批量遷移key的實(shí)例

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

最新評(píng)論