Legally, sure. That's pretty binary.
But if you claim they have the moral right to do so you need to elaborate on that. Since they had a "social contract" with the community (people who submitted PR's, advocated for Redis, etc.) which a single side has now altered. I don't see how one can do that an claim to be in their moral rights to do so.
We've altered the deal, pray we don't alter it any further...
No they haven't. "The community" submitted under a BSD licence, they literally gave anyone permission to take their code and relicence it under an alternative.
It's not like the BSD version of their code has disappeared. You can still use older versions of Redis that have their changes under BSD.
It sounds like submitters should have gone with GPL or AGPL if they wanted it to remain open source, available with the original licence for commercial use, etc.
This would only be immoral if you were misled or forced, and I'd argue that neither is the case here.
All the contributors gave their explicit permission to use their contribution in the way Redis does.
All contributors had plenty of freedom to spend their energy in projects under a license that specifically prevents what happened with Redis. It is not that they wouldn't have other options.
What they did do is decide that in the future, their work won't be as easily taken advantage of.
Morally I would say it depends on contributors. If there haven't been any then sure, but if I contributed a feck-load of code to some project and they slap on a commercial license, I guess I feel somewhat shafted.
You shouldn't. If you contribute to a project under a permissive license that is what you sign up for.
I contributed to projects under permissive licenses myself, there is nothing wrong with it. Being indignant about companies exercising the rights you explicitly granted them is unwarranted though.
I think you should not feel shafted, but if you do there is a simple and obvious solution.
The best thing you can do is to fork the project at the commit prior to the license change, and maintain it from that point onwards (and/or contribute to other forks with the same goal).
And use an appropriate license. Don't use BSD if you don't want people taking your stuff and closing it up.
It is our obligation as developers to communicate to companies if we want these license changes to happen or not. If you don't like it, don't contribute and invest your time into projects that are not licensed in way that matches your needs and wants.