如何使 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 数据库存储和检索的这些数据是特定于用户的,并且不会在不同用户之间共享?
注意:我正在使用会话来处理用户
所以您可以做很多事情:
- 你可以使用redis提供的不同的内存数据库。 Redis支持
最多 16 个数据库。您可以将不同用户的密钥存储在不同的数据库中。
要获取它们,请连接相应的数据库。无法访问不同数据库中的数据,即如果您建立连接
到 DB 0,您无法从 DB 1 获取数据。
- 实施 Redis ACL - 如果您使用的是 Redis 版本 6+,您可以
利用使用 ACL(访问控制列表)的功能。你可以
为每个用户创建具有密码的用户并传递这些凭据
在建立 Redis 连接时。您甚至可以添加 permissions/commands
等给用户。因此,使用 userid:data 之类的用户 ID 为密钥添加前缀,并创建有权访问具有各自前缀的密钥的用户。因此,任何用户都无法访问其他用户的数据。
下面的简化代码是 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 数据库存储和检索的这些数据是特定于用户的,并且不会在不同用户之间共享?
注意:我正在使用会话来处理用户
所以您可以做很多事情:
- 你可以使用redis提供的不同的内存数据库。 Redis支持 最多 16 个数据库。您可以将不同用户的密钥存储在不同的数据库中。 要获取它们,请连接相应的数据库。无法访问不同数据库中的数据,即如果您建立连接 到 DB 0,您无法从 DB 1 获取数据。
- 实施 Redis ACL - 如果您使用的是 Redis 版本 6+,您可以 利用使用 ACL(访问控制列表)的功能。你可以 为每个用户创建具有密码的用户并传递这些凭据 在建立 Redis 连接时。您甚至可以添加 permissions/commands 等给用户。因此,使用 userid:data 之类的用户 ID 为密钥添加前缀,并创建有权访问具有各自前缀的密钥的用户。因此,任何用户都无法访问其他用户的数据。