Udostępnij za pośrednictwem


Szybki start: używanie usługi Azure Cache for Redis w środowisku Python

W tym przewodniku Szybki start dołączasz usługę Azure Cache for Redis do skryptu języka Python, aby mieć dostęp do bezpiecznej dedykowanej pamięci podręcznej dostępnej z dowolnej aplikacji na platformie Azure.

Przejdź do kodu w usłudze GitHub

Jeśli chcesz przejść prosto do kodu, zobacz przewodnik Szybki start języka Python w witrynie GitHub.

Wymagania wstępne

Tworzenie wystąpienia pamięci podręcznej Azure Cache for Redis

  1. Aby utworzyć pamięć podręczną, zaloguj się do witryny Azure Portal i wybierz pozycję Utwórz zasób.

    W okienku nawigacji po lewej stronie wyróżniono pozycję Utwórz zasób.

  2. Na stronie Wprowadzenie wpisz Azure Cache for Redis w polu wyszukiwania. Następnie wybierz przycisk Utwórz.

    Zrzut ekranu witryny Azure Marketplace z usługą Azure Cache for Redis w polu wyszukiwania i tworzenie został wyróżniony czerwonym polem.

  3. Na stronie Nowa pamięć podręczna Redis Cache skonfiguruj ustawienia pamięci podręcznej.

    Ustawienie Wybierz wartość opis
    Subskrypcja Z listy rozwijanej i wybierz subskrypcję. Subskrypcja, w ramach której ma zostać utworzone to nowe wystąpienie usługi Azure Cache for Redis.
    Grupa zasobów: Z listy rozwijanej i wybierz grupę zasobów lub wybierz pozycję Utwórz nową i wprowadź nową nazwę grupy zasobów. Nazwa grupy zasobów, w której ma zostać utworzona pamięć podręczna i inne zasoby. Umieszczając wszystkie zasoby aplikacji w jednej grupie zasobów, można je łatwo zarządzać lub usuwać razem.
    Nazwa DNS Wprowadź unikatową nazwę. Nazwa pamięci podręcznej musi być ciągiem z zakresu od 1 do 63 znaków, które zawierają tylko cyfry, litery lub łączniki. Nazwa musi zaczynać się i kończyć cyfrą lub literą i nie może zawierać kolejnych łączników. Nazwa hosta wystąpienia pamięci podręcznej to <nazwa> DNS.redis.cache.windows.net.
    Lokalizacja Z listy rozwijanej i wybierz lokalizację. Wybierz region w pobliżu innych usług korzystających z pamięci podręcznej.
    Jednostka SKU pamięci podręcznej Z listy rozwijanej wybierz jednostkę SKU. Jednostka SKU określa rozmiar, wydajność i parametry funkcji, które są dostępne dla pamięci podręcznej. Aby uzyskać więcej informacji, zobacz Omówienie pamięci podręcznej Azure Cache for Redis.
    Rozmiar pamięci podręcznej Lista rozwijana i wybieranie rozmiaru pamięci podręcznej Aby uzyskać więcej informacji, zobacz Omówienie pamięci podręcznej Azure Cache for Redis.
  4. Wybierz kartę Sieć lub wybierz przycisk Sieć w dolnej części strony.

  5. Na karcie Sieć wybierz metodę łączności.

  6. Wybierz kartę Dalej: Zaawansowane lub wybierz przycisk Dalej: Zaawansowane w dolnej części strony, aby wyświetlić kartę Zaawansowane.

    Zrzut ekranu przedstawiający kartę Zaawansowane w okienku roboczym i dostępną opcję do wybrania.

    • W przypadku pamięci podręcznych w warstwie Podstawowa lub Standardowa przełącz wybór portu innego niż TLS. Możesz również wybrać, jeśli chcesz włączyć uwierzytelnianie firmy Microsoft Entra.
    • W przypadku pamięci podręcznej Premium skonfiguruj ustawienia portów innych niż TLS, klastrowanie, tożsamość zarządzana i trwałość danych. Możesz również wybrać, jeśli chcesz włączyć uwierzytelnianie firmy Microsoft Entra.

    Ważne

    Aby uzyskać optymalne zabezpieczenia, firma Microsoft zaleca używanie identyfikatora Entra firmy Microsoft z tożsamościami zarządzanymi w celu autoryzowania żądań względem pamięci podręcznej, jeśli to możliwe. Autoryzacja przy użyciu identyfikatora Entra firmy Microsoft i tożsamości zarządzanych zapewnia doskonałe zabezpieczenia i łatwość użycia w przypadku autoryzacji klucza współdzielonego. Aby uzyskać więcej informacji na temat używania tożsamości zarządzanych z pamięciami podręcznymi, zobacz Use Microsoft Entra ID for cache authentication (Używanie identyfikatora Entra firmy Microsoft do uwierzytelniania w pamięci podręcznej).

  7. Wybierz kartę Dalej: Tagi lub wybierz przycisk Dalej: Tagi w dolnej części strony.

  8. Opcjonalnie na karcie Tagi wprowadź nazwę i wartość, jeśli chcesz skategoryzować zasób.

  9. Wybierz pozycję Przejrzyj i utwórz. Przejdź do karty Przeglądanie i tworzenie, na której platforma Azure weryfikuje konfigurację.

  10. Po pojawieniu się zielonego komunikatu Weryfikacja przekazana wybierz pozycję Utwórz.

Utworzenie pamięci podręcznej zajmuje trochę czasu. Postęp można monitorować na stronie Przegląd usługi Azure Cache for Redis. Gdy stan jest wyświetlany jako Uruchomiono, pamięć podręczna jest gotowa do użycia.

Instalowanie biblioteki redis-py

Redis-py to interfejs języka Python dla usługi Azure Cache for Redis. Użyj narzędzia pakiety języka Python, pip, aby zainstalować redis-py pakiet z wiersza polecenia.

W poniższym przykładzie użyto pip3 języka Python 3 do zainstalowania redis-py w systemie Windows 11 z poziomu wiersza polecenia administratora.

Zrzut ekranu przedstawiający terminal przedstawiający instalację interfejsu redis-py w usłudze Azure Cache for Redis.

Tworzenie skryptu języka Python w celu uzyskania dostępu do pamięci podręcznej

Utwórz skrypt języka Python, który używa identyfikatora Entra firmy Microsoft lub kluczy dostępu w celu nawiązania połączenia z usługą Azure Cache for Redis. Zalecamy użycie identyfikatora Entra firmy Microsoft.

Włączanie uwierzytelniania identyfikatora Entra firmy Microsoft w pamięci podręcznej

Jeśli masz już pamięć podręczną, najpierw chcesz sprawdzić, czy włączono uwierzytelnianie Entra firmy Microsoft. Jeśli nie, włącz ją. Zalecamy używanie identyfikatora Entra firmy Microsoft dla aplikacji.

  1. W witrynie Azure Portal wybierz wystąpienie usługi Azure Cache for Redis, w którym chcesz użyć uwierzytelniania opartego na tokenach firmy Microsoft.

  2. Wybierz pozycję Uwierzytelnianie z menu Zasób.

  3. Sprawdź w okienku roboczym, czy jest zaznaczone pole wyboru Włącz uwierzytelnianie firmy Microsoft Entra. Jeśli tak, możesz przejść dalej.

  4. Wybierz pozycję Włącz uwierzytelnianie firmy Microsoft Entra i wprowadź nazwę prawidłowego użytkownika. Wprowadzony użytkownik jest automatycznie przypisywany zasad dostępu właściciela danych domyślnie po wybraniu pozycji Zapisz. Możesz również wprowadzić tożsamość zarządzaną lub jednostkę usługi, aby nawiązać połączenie z wystąpieniem pamięci podręcznej.

    Zrzut ekranu przedstawiający uwierzytelnianie wybrane w menu zasobów i zaznaczoną opcję Włącz uwierzytelnianie firmy Microsoft Entra.

  5. Zostanie wyświetlone okno podręczne z pytaniem, czy chcesz zaktualizować konfigurację, i informuje o tym, że zajmuje to kilka minut. Wybierz opcję Tak.

    Ważne

    Po zakończeniu operacji włączania węzły w wystąpieniu pamięci podręcznej są ponownie uruchamiane w celu załadowania nowej konfiguracji. Zalecamy wykonanie tej operacji w oknie obsługi lub poza godzinami pracy szczytu. Operacja może potrwać do 30 minut.

Aby uzyskać informacje na temat korzystania z identyfikatora Entra firmy Microsoft z interfejsem wiersza polecenia platformy Azure, zobacz strony referencyjne dotyczące tożsamości.

Instalowanie biblioteki uwierzytelniania firmy Microsoft

  1. Zainstaluj bibliotekę Microsoft Authentication Library (MSAL). Ta biblioteka umożliwia uzyskiwanie tokenów zabezpieczających z tożsamości firmy Microsoft w celu uwierzytelniania użytkowników.

  2. Aby zapewnić obsługę uwierzytelniania tokenu, możesz użyć dostępnej biblioteki klienta tożsamości platformy Azure języka Python, która używa biblioteki MSAL. Zainstaluj tę bibliotekę przy użyciu polecenia pip:

pip install azure-identity

Tworzenie skryptu języka Python przy użyciu identyfikatora Entra firmy Microsoft

  1. Utwórz nowy plik tekstowy, dodaj następujący skrypt i zapisz plik jako PythonApplication1.py.

  2. Zastąp <Your Host Name> ciąg wartością z wystąpienia usługi Azure Cache for Redis. Nazwa hosta ma postać <DNS name>.redis.cache.windows.net.

  3. Zastąp <Your Username> ciąg wartościami z użytkownika Microsoft Entra ID.

    import redis
    from azure.identity import DefaultAzureCredential
    
    scope = "https://redis.azure.com/.default"
    host = "<Your Host Name>"
    port = 6380
    user_name = "<Your Username>"
    
    
    def hello_world():
        cred = DefaultAzureCredential()
        token = cred.get_token(scope)
        r = redis.Redis(host=host,
                        port=port,
                        ssl=True,    # ssl connection is required.
                        username=user_name,
                        password=token.token,
                        decode_responses=True)
        result = r.ping()
        print("Ping returned : " + str(result))
    
        result = r.set("Message", "Hello!, The cache is working with Python!")
        print("SET Message returned : " + str(result))
    
        result = r.get("Message")
        print("GET Message returned : " + result)
    
        result = r.client_list()
        print("CLIENT LIST returned : ")
        for c in result:
            print(f"id : {c['id']}, addr : {c['addr']}")
    
    if __name__ == '__main__':
        hello_world()
    
  4. Przed uruchomieniem kodu w języku Python z poziomu terminalu upewnij się, że autoryzujesz terminal do korzystania z identyfikatora Entra firmy Microsoft.

    azd auth login

  5. Uruchom polecenie przy użyciu PythonApplication1.py języka Python. Powinny zostać wyświetlone wyniki podobne do następującego przykładu:

    Zrzut ekranu przedstawiający terminal przedstawiający skrypt języka Python do testowania dostępu do pamięci podręcznej.

Tworzenie skryptu języka Python przy użyciu ponownego uwierzytelniania

Tokeny dostępu identyfikatora Entra firmy Microsoft mają ograniczoną żywotność, średnio 75 minut. Aby zachować połączenie z pamięcią podręczną, należy odświeżyć token. W tym przykładzie pokazano, jak to zrobić przy użyciu języka Python.

  1. Utwórz nowy plik tekstowy, dodaj następujący skrypt. Następnie zapisz plik jako PythonApplication2.py.

  2. Zastąp <Your Host Name> ciąg wartością z wystąpienia usługi Azure Cache for Redis. Nazwa hosta ma postać <DNS name>.redis.cache.windows.net.

  3. Zastąp <Your Username> ciąg wartościami z użytkownika Microsoft Entra ID.

    import time
    import logging
    import redis
    from azure.identity import DefaultAzureCredential
    
    scope = "https://redis.azure.com/.default"
    host = "<Your Host Name>"
    port = 6380
    user_name = "<Your Username>"
    
    def re_authentication():
        _LOGGER = logging.getLogger(__name__)
        cred = DefaultAzureCredential()
        token = cred.get_token(scope)
        r = redis.Redis(host=host,
                        port=port,
                        ssl=True,   # ssl connection is required.
                        username=user_name,
                        password=token.token,
                        decode_responses=True)
        max_retry = 3
        for index in range(max_retry):
            try:
                if _need_refreshing(token):
                    _LOGGER.info("Refreshing token...")
                    tmp_token = cred.get_token(scope)
                    if tmp_token:
                        token = tmp_token
                    r.execute_command("AUTH", user_name, token.token)
                result = r.ping()
                print("Ping returned : " + str(result))
    
                result = r.set("Message", "Hello!, The cache is working with Python!")
                print("SET Message returned : " + str(result))
    
                result = r.get("Message")
                print("GET Message returned : " + result)
    
                result = r.client_list()
                print("CLIENT LIST returned : ")
                for c in result:
                    print(f"id : {c['id']}, addr : {c['addr']}")
                break
            except redis.ConnectionError:
                _LOGGER.info("Connection lost. Reconnecting.")
                token = cred.get_token(scope)
                r = redis.Redis(host=host,
                                port=port,
                                ssl=True,   # ssl connection is required.
                                username=user_name,
                                password=token.token,
                                decode_responses=True)
            except Exception:
                _LOGGER.info("Unknown failures.")
                break
    
    
    def _need_refreshing(token, refresh_offset=300):
        return not token or token.expires_on - time.time() < refresh_offset
    
    if __name__ == '__main__':
        re_authentication()
    
  4. Uruchom polecenie przy użyciu PythonApplication2.py języka Python. Powinny zostać wyświetlone wyniki podobne do następującego przykładu:

    Zrzut ekranu przedstawiający terminal przedstawiający skrypt języka Python do testowania dostępu do pamięci podręcznej.

    W przeciwieństwie do pierwszego przykładu, jeśli token wygaśnie, ten przykład automatycznie je odświeża.

Czyszczenie zasobów

Jeśli chcesz nadal korzystać z zasobów utworzonych w tym artykule, zachowaj grupę zasobów.

W przeciwnym razie, jeśli skończysz z zasobami, możesz usunąć utworzoną grupę zasobów platformy Azure, aby uniknąć naliczania opłat.

Ważne

Usunięcie grupy zasobów jest nieodwracalne. Jeśli usuniesz grupę zasobów, wszystkie zawarte w niej zasoby zostaną trwale usunięte. Uważaj, aby nie usunąć przypadkowo niewłaściwych zasobów lub grupy zasobów. Jeśli zasoby zostały utworzone w istniejącej grupie zasobów zawierającej zasoby, które chcesz zachować, możesz usunąć każdy zasób indywidualnie zamiast usuwać grupę zasobów.

Aby usunąć grupę zasobów

  1. Zaloguj się do witryny Azure Portal, a następnie wybierz pozycję Grupy zasobów.

  2. Wybierz grupę zasobów, którą chcesz usunąć.

    Jeśli istnieje wiele grup zasobów, użyj pola Filtruj dla dowolnego pola... wpisz nazwę grupy zasobów utworzonej dla tego artykułu. Wybierz grupę zasobów na liście wyników.

    Zrzut ekranu przedstawiający listę grup zasobów do usunięcia w okienku roboczym.

  3. Wybierz pozycję Usuń grupę zasobów.

  4. Zobaczysz prośbę o potwierdzenie usunięcia grupy zasobów. Wpisz nazwę grupy zasobów w celu potwierdzenia, a następnie wybierz pozycję Usuń.

    Zrzut ekranu przedstawiający formularz, który wymaga nazwy zasobu w celu potwierdzenia usunięcia.

Po krótkim czasie grupa zasobów i wszystkie jej zasoby zostaną usunięte.