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实例 假设我有两个应用程序,一个是烘焙应用程序,另一个是送货应用程序。两个应用程序将使用相同的Redis实例,并且两个应用程序将使用相似的密钥模式(例如,userid:uuid->johnsmith)保存相似的密钥。显然,使用相同的Redis会产生冲突,有没有“名称空间”的方法数据库本身,即使是相同的密钥,也会彼此隔离,从而允许多个应用程序同时使用同一个Redis实例 同时也可以使用Redis search

如何在多租户环境中使用Redis的单个实例。这意味着多个不同的应用程序使用同一个Redis实例

假设我有两个应用程序,一个是烘焙应用程序,另一个是送货应用程序。两个应用程序将使用相同的Redis实例,并且两个应用程序将使用相似的密钥模式(例如,
userid:uuid->johnsmith
)保存相似的密钥。显然,使用相同的Redis会产生冲突,有没有“名称空间”的方法数据库本身,即使是相同的密钥,也会彼此隔离,从而允许多个应用程序同时使用同一个Redis实例

同时也可以使用Redis search,同样,搜索和索引将与每个应用程序隔离。因此,如果搜索位于Delivery应用程序命名空间上,则不会从Baking应用程序命名空间中获取任何内容


如何做到这一点?

因此,您可以做很多事情:

  • 您可以使用app1:userid:uuid等应用程序名称作为密钥前缀
  • 您可以使用redis提供的不同内存数据库。Redis最多支持16个数据库。您可以在不同的数据库中存储不同应用程序的密钥。要获取它们,请连接相应的数据库
  • 您可以使用上述两种方法
  • 要提高安全性,使应用程序无法访问其他应用程序的数据,请执行以下操作:

  • 实现Redis ACL-如果您使用的是Redis版本6+,则可以利用使用ACL(访问控制列表)的功能。您可以为每个应用创建具有密码的用户,并在建立Redis连接时传递这些凭据。您甚至可以向用户添加权限/命令等
  • 无法访问不同数据库中的数据,即如果连接到数据库0,则无法从数据库1获取数据

  • 可能会有帮助。@for_stack是的,名称前缀可能会有帮助,但我正在寻找一种也可以用于搜索的东西,而不会将搜索从“名称空间”泄漏到“名称空间”,例如“前缀”到“前缀”搜索泄漏。关于Redis logical DB,您可以为每个租户创建逻辑DB并使用它<代码>选择12