Ray S
Ray S

Reputation: 629

how to achieve multi tenancy in redis?

Since I am fairly new with redis, I am trying to explore options and see how can I achieve multi tenancy with redis. I read some documentation on redisLabs official page and looks like redis cluster mode supports multi tenancy out of the box with redis enterprise. I am wondering if such a solution for multi tenancy is available in sentinel mode as well?

I may be completely confused with the multi tenancy that redis enterprise provides. May be it works in a sentinel mode also but nothing seems very clear to me.

Can someone throw some light on multi tenancy in redis and what mode supports it?

Upvotes: 9

Views: 9471

Answers (1)

Ersoy
Ersoy

Reputation: 9604

If you are going to use redis-cluster, then only one DB is supported.

Redis Cluster does not support multiple databases like the stand alone version of Redis. There is just database 0 and the SELECT command is not allowed.

If you are not going to use cluster mode, then you may take a look on the message posted by the creator of Redis about multiple databases (years ago)

I understand how this can be useful, but unfortunately I consider Redis multiple database errors my worst decision in Redis design at all... without any kind of real gain, it makes the internals a lot more complex. The reality is that databases don't scale well for a number of reason, like active expire of keys and VM. If the DB selection can be performed with a string I can see this feature being used as a scalable O(1) dictionary layer, that instead it is not.

With DB numbers, with a default of a few DBs, we are communication better what this feature is and how can be used I think. I hope that at some point we can drop the multiple DBs support at all, but I think it is probably too late as there is a number of people relying on this feature for their work.

Salvatore's message Redis cluster documentation

What i may suggest is prefixing. We are using this method in a SaaS application and all different data types are prefixed with related customer name. We handle some of the operations on application layer.

If you want to go single instance/multiple database then you need to manage them on your codebase via using select command. There may be some libraries to manage them. One of the critical thing is that;

All databases are still persisted in the same RedisDB / Append Only file.

Upvotes: 7

Related Questions