Возможно ли как-то оптимизировать json_decode?
Нет, "оптимизировать json_decode" нельзя.

Но вот избавиться от идиотского алгоритма, который чтобы достать одну запись декодит их все по очереди - можно и нужно.
И никакой детский лепет про "ой заранее распарсить ну никак нельзя, сайт крутится на мамином утюге" здесь не помеха. 

Распарсить, положить в базу, при изменении данных менять их в базе, искать по-человечески, через SQL.
А редис тут вообще никаким боком не упёрся.
Переделать схему базы.

Можно попробовать использовать либу для потокового парсинга json halaxa/json-machine. Она вам поможет убедиться что проблема не в парсинге, а в структуре базы