TL;DR: redis-py is not installed for the Python running your code. Run python -m pip install redis (using the same interpreter that runs the code) and the import works.

```text
ModuleNotFoundError: No module named 'redis'
```

## Fix it

1. Install into the right interpreter: python -m pip install redis. Expected: Successfully installed redis.
2. Verify: python -c "import redis; print(redis.__version__)". Expected: a version.
3. If it still fails, you have two Pythons: which python vs which pip. Always use python -m pip. Expected: paths agree.
4. Add redis to requirements.txt so the next fresh env includes it.

## When this applies
- import redis fails with ModuleNotFoundError.

## When it doesn't
- The import works but ping fails: connection/auth problem, not this.
- You need async: pip install "redis[async]" is not a thing; asyncio support is built in since 4.2.

## Compatibility
- redis-py 4.x/5.x; Python 3.8+.

## Why it happens
Fresh venvs, Docker images, and CI runners start with nothing installed. Tutorials assume redis is there because the author's machine has it.

## Edge cases
- The old package name redis-py vs import name redis confuses people; pip install redis is correct.
- hiredis is an optional speed extra, not required.
