Você precisa mostrar ou utilizar o cpf/cnpj no seu sistema ou ele só serve de chave?

Se for somente usado como chave, encripta o cpf/cnpj usando um salt predefinido, como a hora de cadastro do usuário por exemplo.

Assim se alguém conseguir acesso ao seu redis, pode até pegar a chave mas o cpf/cnpj não fica exposto e por consequência problemas com gdpr/lgpd.

Como no desafio técnico você precisa consultar uma api externa fake que retorna um autorizado ou negado. se for negado, tenho que reverter todo o processo e devolver o valor de transação para o cpf / cnpj do remetente.

Imagino que usar um algoritmo de hash tipo argon / bcrypt não seja uma boa, já que são irreversíveis, devo usar uma criptografia?

Eu acho que usar criptografia sincrona ou assíncrona pra esse caso seria overengineering. Eu arrumaria uma outra forma de guardar essa chave no redis. Claro, isso vai depender dos seus requisitos e trade-offs. Porém se usar criptografia, não hashing como sugeri anteriormente, tenha em mente que você vai ter que gerenciar/guardar a chave, sincrona ou assíncrona, e que criptografia assíncrona impacta diretamente a performance. Ou seja, se seu redis vai guardar um número considerável de registros, fica atento a isso.