Данные в Redis могут исчезать из-за настройки TTL (Time To Live) для ключей, которая указывает на время жизни данных. По умолчанию, если TTL не указан, ключи остаются в памяти бессрочно. Однако, если есть необходимость сохранять данные на диск, можно настроить Redis на периодическое сохранение данных в RDB (Redis DataBase) файл.
Ошибка "Background saving error" может возникать из-за недостаточного пространства на диске или из-за недостаточных прав для записи в директорию, где должен быть сохранен RDB файл. Для исправления этой ошибки, необходимо убедиться, что достаточно свободного места на диске и у пользователя, под которым работает Redis, есть права на запись в указанную директорию.
Ошибка "Permission denied" при попытке сохранения RDB файла в директорию /etc связана с тем, что директория /etc обычно доступна только для чтения и запись в нее может потребовать повышенных привилегий. Рекомендуется использовать другую директорию, доступную для записи Redis.
Для исправления этой проблемы, можно отредактировать конфигурационный файл Redis и изменить путь сохранения RDB файла на доступную для записи директорию. Также можно использовать Docker для запуска Redis контейнера с необходимыми правами на запись файлов.
Пример кода для docker-compose.yml:
```yaml
version: '3'
services:
redis:
image: redis
volumes:
- /path/to/your/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
command: redis-server /usr/local/etc/redis/redis.conf
```
Пример кода для настройки пути сохранения RDB файла в конфигурационном файле Redis (redis.conf):
```
dir /path/to/your/redis/data
```
После внесения изменений и перезапуска Redis контейнера, данные должны успешно сохраняться в указанной директории без ошибок "Background saving error" и "Permission denied".