Кэш при открытии пользователем нескольких вкладок Redis + Django
У меня есть база данных, которая обновляется раз в месяц, поэтому я использую redis для сохранения кэша
У меня все работает нормально, я добавляю имя пользователя после ключа следующим образом:
nhan_vien=CustomUser.objects.get(id=request.user.id).username
contract_number = cache.get("contract_number" + nhan_vien)
мои настройки:
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
'TIMEOUT': 60 * 60 * 8,
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
Пользователь не может получить доступ к кэшу другого пользователя.
Если пользователь открыл 2 вкладки, Tab1: у него есть номер_контракта из cache.get("contract_number" + nhan_vien). Он открывает новую вкладку 2, тогда у него/нее есть новый номер_контракта из cache.get("contract_number" + nhan_vien).
Моя проблема, когда он/она сохраняет данные в tab1, мой сайт получает значение из нового contract_number (в tab2) для сохранения данных, в то время как содержимое принадлежит contract_number в tab1.
Если я устанавливаю таймаут, то по истечении этого времени не появляется ни одна запись контракта, и тогда они не могут сохранить данные.
У меня 3 вопроса:
- How can I handle this issue by redis + django. How can I dont allow user opens a new tab while they access my website?
- If I cannot solve this by only redis + django, Is there any other solutions?
- I used to read in Stackoverflow
https://stackoverflow.com/questions/7763115/django-passing-data-between-viewshow can pass data between views. Solution 6 is about REST API's, can I use REST API's to handle my issue? Sorry if this is not a good question because I dont know about REST API.
Спасибо, что прочитали и ответили на мой вопрос.