假设我的数据库表结构是这样的
id name college address
1 xxx nnn xn
2 yyy nnm yn
3 zzz nnz zn
如果我想根据 sql 中的名称获取学生详细信息,例如 select * from student where name = ‘xxx’ 那么它在 redis 数据库中是如何可能的
原文由 Hari Haran 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设我的数据库表结构是这样的
id name college address
1 xxx nnn xn
2 yyy nnm yn
3 zzz nnz zn
如果我想根据 sql 中的名称获取学生详细信息,例如 select * from student where name = ‘xxx’ 那么它在 redis 数据库中是如何可能的
原文由 Hari Haran 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 SQL 数据库设计中,我们首先将所有内容放入数据库中,然后弄清楚我们将如何查询它
在 Redis 设计中,我们首先弄清楚我们需要回答哪些查询,然后我们将构建我们的数据。
这就是 Redis 超级快的原因。在某些情况下,Redis 将数据存储为哈希。如果记录具有许多属性,在您的情况下,学生可能具有“年龄、姓名、班级”属性,因此将“学生”存储为哈希很有用。
在 Redis 中,当你构建你的应用程序时,你必须看看你要存储什么——用户、会话、产品——并且基于你的应用程序存储的那些东西,你必须计划使用哪些数据结构来存储每个东西.
原文由 Yilmaz 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答3.2k 阅读
1 回答2.4k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答1.9k 阅读✓ 已解决
1 回答799 阅读✓ 已解决
2 回答1.2k 阅读
1 回答1.5k 阅读
Redis 与其他 NoSQL 数据存储一样,根据您将要执行的操作有不同的要求。
Redis 有几种数据结构,根据您的需要可能会有用。例如,如果您希望使用
select * from student where name = 'xxx'
您可以使用 Redishash
。但是,如果您有其他查询,例如您想做同样的事情,但选择
where college = 'nnn'
那么您将不得不对数据进行非规范化。非规范化在 SQL 中通常是一件坏事,但在 NoSQL 中却很常见。如果您的主要查询将针对名称,但您可能需要查询大学,那么您可能会执行类似添加
set
之类的操作。使用这样的数据结构,如果您想查找上大学 xn 的姓名的所有信息,您将首先选择
set
,然后根据返回的名称选择每个hash
set
。您的要求通常会推动您使用的设计和结构。