餐桌学校:
3 个字段:
sid(学校编号)
s_name(学校名称)
s_type(学校类型)
表用户:
2 个字段:
user_id(用户 ID)
姓名(用户名)
表school_user_relationship:
3 个字段:
摆脱(关系ID)
sid(学校编号)
user_id(用户id)
如何使用Redis优化以下两个需求?
数据结构: 哈希?放?位集?
不使用任何优化时,查询时间有点长。因此,优化很有可能毕业。但我还没有任何计划。
你的问题听起来像是你有一个关系数据库(SQL)方法来解决你的问题。另一方面,Redis 的核心是键值存储或关联数组。 Java 开发工具包提供 HashMap 数据类型作为键值存储。 Python 提供字典,Javascript 提供具有属性的对象。 php 和 perl 提供关联数组
让我们把数据结构称为字典(通用的,不是 python)。在所有这些数据结构中,以及在 Redis 中,您可以通过执行类似于此伪代码的操作来存储您的用户数据,将您的用户名放入用户名字典中。 (
<--
是伪代码赋值运算符。)
usernames[user_id] <-- name
然后,如果你知道用户的 id,你可以像这样得到名字
name <-- usernames[user_id]
但是如果你知道用户的名字并且你想要他们的id,你需要一个单独的数据结构
userids[name] <-- user_id
并执行此操作以按名称恢复 ID。
user_id <-- userids[name]
在 SQL 中你可以说
SELECT user_id FROM users WHERE name = whatever
,但字典不是那样工作的(无论如何效率不高)。
字典可以有字典(redis中的HASH)和集合(redis中的SET)作为值。所以你可以有一本字典,每所学校都有一个条目,这是该学校注册人员的一组用户 ID
为 Redis 设计性能良好的一个好方法是弄清楚如何使用带有字典的普通编程语言来实现它。