The best book for me was the King book.
Clear. Thorough. And most importantly the order of the chapter topics.
And definitely do the projects to practice.
I am doing the same in Rust (a new language for me) and OCaml (known a little bit). It forces you to find different solutions and you learn new languages at the same time.
So how do you re-implement something like Redis in another language?
Is it more of a translation job or do you start with splitting the concepts and try to implement it.
Or take the idea and go your own way with implementing it?