Уточните, prev/next выдаёт случайный id или соседний? Если соседний, то выходит так, что все изображения которые просмотрел пользователь, формируют диапазон id.
Если так, то для каждого пользователя, надо хранить min/max id изображения, которое он уже посмотрел, а также его текущую позицию.
В реляционной базе была бы такая таблица:
user id, min_image_id, max_image_id, current_image_id
Тогда, когда пользователь кликает prev/next надо в таблице изображений находить изображение, следующее за текущим, и обновлять состояние пользователя.
В целом, можно хранить и все изображения, которые просмотрел пользователь, сути это не изменит, просто потребуется больше места.
Сделать такую штуку можно на чём угодно, могу рассказать как сделать на Тарантуле.