我必須創建一個帶有鍵的redis數據庫作爲正則表達式模式(URL模式:可能是我應該說的只是URL路徑)。所以當一個URL進入我的應用程序時,我需要看看它適合哪種模式並獲得密鑰。 redis是否已經提供了更簡單的方式來進行模式匹配?作爲正則表達式的Redis鍵?
Any thoughts to improve the logic is appreciated.
問候, Lalith
我必須創建一個帶有鍵的redis數據庫作爲正則表達式模式(URL模式:可能是我應該說的只是URL路徑)。所以當一個URL進入我的應用程序時,我需要看看它適合哪種模式並獲得密鑰。 redis是否已經提供了更簡單的方式來進行模式匹配?作爲正則表達式的Redis鍵?
Any thoughts to improve the logic is appreciated.
問候, Lalith
antirez has his lua-scripting branch起來。給它一個嘗試;)
redis-cli keys "user:*" | grep "user:[0-9]\+$" | xargs redis-cli DEL
這是從Here
我不認爲使用密鑰是一個好主意,密鑰只是用於開發目的,或者在非常罕見的情況下。 來自文檔: 警告:將KEYS視爲僅應在生產環境中非常小心使用的命令。在對大型數據庫執行它時可能會損壞性能。此命令用於調試和特殊操作,例如更改您的密鑰空間佈局。請勿在常規應用程序代碼中使用KEYS。如果您正在尋找一種方法在您的密鑰空間的子集中查找密鑰,請考慮使用SCAN或集合。 – robertomarin 2015-02-05 01:11:50
採取你可以保持兩種結構:
1 - 首先list與所有你的鑰匙。我的意思是,所有你的url-regex來匹配你的網址。每次創建另一個url-regex時都應該更新它。你也可以在應用程序的內存中存儲這些內容,所以你不時閱讀這個列表來更新這些項目。
2 - 其次是url-regex鍵。這是你提到的關鍵,所以你在這裏把你的價值觀,無論它們是什麼。
我不認爲使用keys
是一個好主意。它不適用於生產用途,至少不適用於使用它的業務邏輯。
從DOC keys:
警告:考慮鍵作爲應當只在非常謹慎的生產環境中使用的命令。在對大型數據庫執行它時可能會損壞性能。此命令用於調試和特殊操作,例如更改您的密鑰空間佈局。請勿在常規應用程序代碼中使用KEYS。如果您正在尋找一種方法在您的密鑰空間的子集中查找密鑰,請考慮使用SCAN或集合。
你不應該在生產環境中使用「keys」,但它與「業務邏輯」無關,並且與性能無關。 – Madbreaks 2016-09-28 17:02:07
@Madbreaks是的,你是對的,這都是關於性能。我的意思是,你可以在生產中使用它,但不是爲了每一個請求,或者大量使用它,試圖查詢和過濾你的密鑰,然後對它應用一些邏輯,但是你可以用它作爲你的幫手環境。我曾經有一個擁有32個Redis實例的大型集羣,所以我建立了一個工具來管理我的生產集羣,這個工具做了一些'keys'的使用,它是生產,但並不是它的大量使用,它是這種方式你可以或者可以,但最好避免它。 – robertomarin 2016-09-30 01:24:43
你試過了keys命令嗎?該命令支持正則表達式輸入。 – Colum 2011-04-06 21:21:18
是的。但是,我必須通過所有的鍵並找到匹配的鍵。我很好奇,如果redis有任何命令來做到這一點。如果計算在redis中運行,它肯定會更快。 – Lalith 2011-04-06 21:39:23