Как лучше всего передавать и хранить, просмотры и лайки на PHP?
Посты лайкаются и смотрятся неравномерно: бурлят свежие посты, статично висят старые-забытые.
Поэтому для кипящего ядра можно держать данные в оперативке, скажем, в Redis – туда писать, оттуда читать. Если ключа поста нет в Redis, то вынимать из БД. Периодически из Redis'а копировать в БД все данные и убирать из Redis данные по постам, которые перестали обновляться.
Часть нагрузки можно передать на клиент. При загрузке с сервера всем раздавать одинаковые данные о свежих постах (их id без содержания, если длинные). Далее по мере просмотра счётчики лайков/просмотров обновлять на клиенте, синхронизируя лайки с сервером не так часто. И скрипт на клиенте решает дальше, какие посты подгружать и показывать, учитывая локальные просмотры.
Ещё мысль: nginx умеет Lua. Можно операции с лайками/просмотрами поручить сольному nginx без PHP. Правда, возникает вопрос с авторизацией.
Главная проблема в том как твоя система будет определять просмотренные? Каждый раз перебор по сотням и тысячам записей в базе? Бред, БД упадет. Здесь надо сильно подумать. Ну или устроиться программером на Пикабу и подсмотреть как у них сделано ))