Most of redis' API is quite coherent. Some of the incoherence is due to the fact that some commands get less attention, such as LPUSHX (which I've never really noticed and I've been using redis for 6 years). Some is because of the core idea of remaining backwards compatible, so even if you have option or commands added, they will never replace old ones, which can cause a bit of complexity and inconsistency.
> Why there is even hyperloglog in a database?
Remember that redis is not really a database but a "data structure server". I have to say I personally don't think this should have been part of the redis core, and it's a textbook example of what redis modules should be, but it came 2-3 years before modules.
> Where did the need for RPUSHLPOP come from?
It came from distributed work queues, which are a popular use case for redis. The documentation actually goes into great detail explaining how to use it.
> Why there is even hyperloglog in a database?
Remember that redis is not really a database but a "data structure server". I have to say I personally don't think this should have been part of the redis core, and it's a textbook example of what redis modules should be, but it came 2-3 years before modules.
> Where did the need for RPUSHLPOP come from?
It came from distributed work queues, which are a popular use case for redis. The documentation actually goes into great detail explaining how to use it.