如何使 Redis 数据用户特定?

How to make Redis data user specific?

下面的简化代码是 Flask 中多用户平台的一部分。

r = redis.Redis(host='localhost', port=6379, db=0, password=None, socket_timeout=None)

def button_func():
    # some executions
    r.set(my_data, encodedNumpyData)
    return jsonify('success')

def another_func():
    r.get(my_data)
    # some execcutions
    return render_template('some.html')

如何确保从 Redis 数据库存储和检索的这些数据是特定于用户的,并且不会在不同用户之间共享?

注意:我正在使用会话来处理用户

所以您可以做很多事情:

  1. 你可以使用redis提供的不同的内存数据库。 Redis支持 最多 16 个数据库。您可以将不同用户的密钥存储在不同的数据库中。 要获取它们,请连接相应的数据库。无法访问不同数据库中的数据,即如果您建立连接 到 DB 0,您无法从 DB 1 获取数据。
  2. 实施 Redis ACL - 如果您使用的是 Redis 版本 6+,您可以 利用使用 ACL(访问控制列表)的功能。你可以 为每个用户创建具有密码的用户并传递这些凭据 在建立 Redis 连接时。您甚至可以添加 permissions/commands 等给用户。因此,使用 userid:data 之类的用户 ID 为密钥添加前缀,并创建有权访问具有各自前缀的密钥的用户。因此,任何用户都无法访问其他用户的数据。