Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在redis中实现多租户?_Redis - Fatal编程技术网

如何在redis中实现多租户?

如何在redis中实现多租户?,redis,Redis,因为我对redis相当陌生,所以我正在尝试探索各种选择,看看如何使用redis实现多租户。 我在redisLabs官方页面上阅读了一些文档,看起来RedisCluster模式支持RedisEnterprise的开箱即用多租户。 我想知道在sentinel模式下是否也有这样的多租户解决方案 我可能对redis enterprise提供的多租户完全感到困惑。也许它在哨兵模式下也能工作,但对我来说似乎什么都不清楚 有人能解释一下redis中的多租户以及支持多租户的模式吗?如果您打算使用redis集群,

因为我对redis相当陌生,所以我正在尝试探索各种选择,看看如何使用redis实现多租户。 我在redisLabs官方页面上阅读了一些文档,看起来RedisCluster模式支持RedisEnterprise的开箱即用多租户。 我想知道在sentinel模式下是否也有这样的多租户解决方案

我可能对redis enterprise提供的多租户完全感到困惑。也许它在哨兵模式下也能工作,但对我来说似乎什么都不清楚


有人能解释一下redis中的多租户以及支持多租户的模式吗?

如果您打算使用
redis集群
,那么只支持一个DB

Redis Cluster不支持独立版本的Redis这样的多个数据库。只有数据库0,不允许使用SELECT命令

如果您不打算使用集群模式,那么您可以看看Redis创建者发布的关于多个数据库的消息(几年前)

我理解这是怎么有用的,但不幸的是我认为 Redis多个数据库错误是Redis设计中最糟糕的决定 全部的如果没有任何实际的收益,它会让内部变得很多 更复杂。现实情况是,数据库不能很好地扩展到一个特定的领域 原因的数量,如密钥和虚拟机的活动过期。如果DB 可以使用字符串执行选择。我可以看到此功能正在使用 用作可伸缩的O(1)字典层,但实际上并非如此

使用DB编号,默认为几个DB,我们可以进行通信 我认为这个功能是什么以及如何使用更好。我希望 在某个时候,我们完全可以放弃对多个DBs的支持,但我认为 这可能太晚了,因为有许多人依赖于此 他们的工作特点

我可以建议加前缀。我们在SaaS应用程序中使用此方法,所有不同的数据类型都以相关的客户名称作为前缀。我们在应用层处理一些操作

如果您想使用单个实例/多个数据库,则需要使用
select
命令在代码库中管理它们。可能有一些库来管理它们。关键的一点是:

所有数据库仍保留在同一个RedisDB/Append-Only文件中


你能提供更多关于你案件的细节吗?每个租户有不同的节点?或者密钥的分配取决于单个多租户数据库上的租户?每个租户没有不同的节点,因为我的租户会不断增长,我不希望节点以这种方式线性增长。太贵太麻烦了。不是后者,因为我不希望租户共享数据库。对于真正的租户资源隔离,我希望他们拥有独立的数据库。根据redisLabs的这篇文章,在RedisEnterprise中,多租户是开箱即用的,客户端不需要管理任何东西。根据它对体系结构的解释,我认为我只需要决定一个分片密钥,即租户id,不同的分片将在单个或不同的Dbs中无缝管理,我将拥有HA,并且它可以跨Dbs复制分片。你认为redis enterprise会是这里的解决方案吗?找不到这个的定价,因为他们会增加服务成本或任何额外成本(管理或维护),那么它可能会比你管理的成本更高。除此之外,;它适合您的用例。