Powiedzmy, że chcesz, abyś zaczął nazywać pola od under_scores, a inny członek zespołu używał camelCase. Teraz twoje hasze redis są bałaganem i wolisz trzymać się jednej konwencji. Potrzebujesz sposobu na zmianę nazw pól we wszystkich skrótach.
Redis nie ma możliwości zmiany nazw pól w obrębie skrótu. Ale co ważniejsze, nie ma sposobu, aby to zrobić dla wszystkich utworzonych skrótów.
Na szczęście do naprawienia bałaganu wystarczy odrobina magii wiersza poleceń.
To polecenie wyszuka klucze pasujące do wzorca użytkownicy:*, a następnie zmieni nazwy pól
- data_tworzenia do data utworzenia
- posttypeid do postTypeId
- liczba wyświetleń do licznika wyświetleń
- … i tak dalej
Polecenie brakującego „hrename”
Redis nie ma polecenia hrename, więc najpierw piszemy je w skrypcie lua. To polecenie zmieni nazwy pól w jednym hashu.
evalsha <script-sha1-identifier> 1 <key> <old-field-1> <new-field-1>...
Najpierw musisz załadować skrypt. Polecenie cat hrename.lua | redis-cli -x script load
ładuje skrypt i zwraca identyfikator SHA1. Możesz użyć tego identyfikatora za każdym razem, gdy chcesz wywołać skrypt.
Zmienianie nazw pól w wielu hashach
Teraz, gdy mamy polecenie naprawienia pojedynczego skrótu, musimy uruchomić je w pętli dla wszystkich skrótów, które pasują do wzorca. Skrypt hash_bulk_rename_fields.sh
właśnie to robi.
- Najpierw używamy
redis-cli --scan --pattern <pattern>
aby uzyskać listę kluczy, jeden klucz w linii. - Następnie przekazujemy klucze przez
grep
. Polecenie skanowania Redis nie akceptuje wyrażeń regularnych, więc wykonujemy podstawowe filtrowanie za pomocą skanowania, a następnie zapewniamy lepsze wyrażenie regularne za pomocą grep. - Następnie uruchamiamy skrypt awk dla każdego klawisza. Ten skrypt awk jest trochę skomplikowany, więc podzielimy go na części
- Skrypt awk ma szablon poleceń
evalsha <sha1> 1 __key__ <old field name> <new field name>..
. To jest polecenie, które będzie działać dla wszystkich klawiszy. - Dla każdego pasującego klucza polecenie awk zastępuje
__key__
z właściwym kluczem - Następnie konwertujemy polecenie ciągu do formatu protokołu redis. To jest surowy format, który rozumie redis.
- Na koniec przesyłamy surowe polecenia do redis-cli za pomocą flagi –pipe. Jest to najskuteczniejszy sposób wysyłania poleceń zbiorczych do redis.
Dostosowywanie tego skryptu
- Możesz zmienić
--pattern
i polecenie grep, aby wybrać klucze typu hash - Możesz dostosować
cmd_template
aby uwzględnić pola, których nazwę chcesz zmienić - Jeśli serwer redis nie znajduje się na hoście lokalnym, będziesz musiał podać hosta, port i hasło dwukrotnie w poleceniu, w zasadzie za każdym razem, gdy wywołasz redis-cli.
Zobacz też
- Zmień nazwy wielu kluczy za pomocą skanowania
- Usuń klucze pasujące do wzorca
- Ustaw wygaśnięcie na wiele kluczy
- GUI RDBTools dla Redis umożliwia podgląd działań zbiorczych i zapewnia potężny graficzny interfejs użytkownika do zarządzania danymi w Redis. To bezpłatne pobieranie!