Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Jak zmienić nazwy pól w haszu dla wielu kluczy w Redis

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.

  1. Najpierw używamy redis-cli --scan --pattern <pattern> aby uzyskać listę kluczy, jeden klucz w linii.
  2. 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.
  3. Następnie uruchamiamy skrypt awk dla każdego klawisza. Ten skrypt awk jest trochę skomplikowany, więc podzielimy go na części
  4. 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.
  5. Dla każdego pasującego klucza polecenie awk zastępuje __key__ z właściwym kluczem
  6. Następnie konwertujemy polecenie ciągu do formatu protokołu redis. To jest surowy format, który rozumie redis.
  7. 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

  1. Możesz zmienić --pattern i polecenie grep, aby wybrać klucze typu hash
  2. Możesz dostosować cmd_template aby uwzględnić pola, których nazwę chcesz zmienić
  3. 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!

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. redis-server w ubuntu14.04:Adres powiązania jest już używany

  2. Jak utworzyć połączenie Redis z Master i Slave?

  3. Jak przechowywać obiekt binarny w redis za pomocą węzła?

  4. Chcesz zaimplementować gniazda sieciowe w Laravel

  5. Jak przekonwertować datę Redis na R