redis如何分隔同一台服务器上的多个用户实例运行?

How does redis separates the multiple user instance running on same server?

关于 Redis

我的困惑

如果我在我的服务器上安装 Redis,我的 4 个不同的客户端 连接到那个 相同的 redis 服务器,那么它们之间的数据将如何它们将保持独立,这样一个客户端不会覆盖另一个客户端保存的键值对。

例如:-

client-1 set name="adam"

client-2 set name="henry"

因此,由于 Redis 服务器在这些客户端之间 通用 ,客户端 1 设置的名称键将被客户端 2 覆盖,所以当 client-1 execute get name ==> henry(因为已经更新错了,他以为是adam)

那么Redis是如何在同一台服务器上分离多个用户实例运行的呢?它是在内部创建单独的数据库还是根据用户或什么存储?

由于您有键值对并且您对多个客户端使用完全相同的键,因此您需要区分您的客户端。这样做的一种方法是将您的客户的标识符添加到每个密钥之前。因此,您可以执行 set client1_name 之类的操作,而不是 set name。你最好在你的应用程序中实现一些函数,这些函数将被称为 setNamegetName 并且它会将客户端标识符添加到引擎盖下的名称之前。因此,您只需实施一次辅助函数,确保它正确地为 getter 和 setter 构建密钥,再也不用担心客户端。

Redis 本身不会分离您的数据。您必须自己将它们分开。有很多选择可以做到这一点。

  1. 使用Redis数据库:Redis支持多数据库。每个应用程序(在您的情况下为客户端)都可以 set/allocated 用于使用一个特定的数据库。这个分配必须在应用端完成,不能在Redis中完成。

    这种方法的局限性在于:i) Redis 最多支持16 个数据库(表示为0 到15)。 ii) Redis集群模式只支持一个数据库

    注意:SELECT命令用于select特定数据库。

  2. Namespacing:每个应用程序都可以(例如)分配一个唯一的前缀。他们会在所有键前加上指定的前缀。

  3. 每个应用程序使用单独的 Redis 实例。