"sometimes i need to search the payload with another value in json"
You can't, Redis isn't built for this. Redis is fast, mostly for key-value storage. You'll need a relational database if you have a lot of fields in json to index. Yes, you can use redissearch.io, though you should note its free version won't allow you use on platforms like AWS or Azure, you'll have to deploy your own Redis, and it doesn't support redis-cluster. So it would be better if you just use relational database or Elasticsearch.
However, if you only need one or two extra index to find the value(json payload in your case), it can be achieved efficiently.
Store your json as redis STRING
{"someKey","your json payload"}
nothing unusual here.
Or better, as redis HASH
{"myRedisHash",[{"someKey",""your json payload"},{"anotherKey","another json"}]}
(HASH saves some memory over STRING)
Then store your second indexes in redis HASH
{"mySecondIndexHash",[{"second_index_1",""someKey"},{"second_index_2","anotherKey"}]}
So it basically maps your second_index to your primary key. You maintain the second index hash while you update your main value STRING/HASH. Do the same for your third, forth index.
Note the multiple operations are not atomic, if it's important for you, you should write them in Lua scrip.