2011-09-29 83 views
2

在MySQL中我有一個名爲表:如何在Redis中搜索?

cities,其中包括2列:name和​​

,然後我得到這個搜索結果:

SELECT * FROM cities WHERE name LIKE '%Bu%' ORDER by population DESC LIMIT 2

而且我得到的結果Bucharest,Budapest

我該如何在Redis中做到這一點?我的意思是我如何創建一個類似的結構,然後如何搜索值?

+0

你沒有。請參閱:http://stackoverflow.com/questions/6401194/how-do-i-search-strings-in-redis – ldg

+0

@ldg我看到,但對於這個問題沒有答案,這有助於我理解這是如何工作在redis 。 – Adam

回答

7

我認爲你需要做一些關鍵值存儲工作的更多研究,但要使用你的文章作爲一個過於簡化的例子,一個這樣做的方式將是爲你創建所有你的鑰匙值,然後創建匹配到這些密鑰索引:

SET c1 "Bucharest" 
SET c3 "Budapest" 
SADD city:bu c1 
SADD city:bu c3 
SMEMBERS city:bu 

=>【 「C1」, 「C3」]

你可以使用:http://try.redis-db.com/嘗試一下。

延長,對於3個字符的搜索:

SADD city:buc c1 
SMEMBERS city:buc 

=>【「C1」]

有很多方法可以解決這個,包括方法,你可以指定秩索引,等等。還要注意,這個例子與example不同,但有點容易理解 - 它與here類似。

+0

嗨。我需要存儲多個兩個多個值,其中每個「多個」都可以附加一個附加字符串值。我需要能夠通過它的子字符串值找到父項,並通過包含提供有效的搜索,從等開始。1)Redis是一個不錯的選擇嗎? 2)任何其他想法(最好麻省理工學院/ BSD/Apache許可)?謝謝! – Shimmy

+0

嗨@Shimmy - 這可能不是合適的論壇,因爲這是一個非常廣泛的問題,涉及到很多特定於應用程序的問題。你可以使用Redis來設置你自己的索引,比如[this](https://robots.thoughtbot.com/redis-partial-word-match-you-auto-complete-me),但是從你的簡要描述中可以看出你不熟悉Redis,可能不是最好的選擇。查看一個帶有本地文本的數據庫,搜索從文檔存儲(〜MongoDB)到RDBMS,到多模型數據庫到Lucene/Solr的範圍 - 或者這些數據庫的某些組合,以及其他數據庫! – ldg