当前位置: 首页 > 面试题库 >

设计像SQL那样的Redis数据库表?

刘修能
2023-03-14
问题内容

假设我的数据库表结构是这样的

id name college address
1  xxx   nnn     xn
2  yyy   nnm     yn
3  zzz   nnz     zn

如果我想根据像这样的sql中的名称获取学生详细信息,请从 name =’xxx’的学生那里选择,以便在redis数据库中如何实现


问题答案:

像其他NoSQL数据存储区一样,Redis根据要执行的操作有不同的要求。

Redis有几种数据结构,根据您的需求可能有用。例如,鉴于您对a的渴望,select * from student where name = 'xxx'可以使用Redis hash

redis 127.0.0.1:6379> hmset xxx id 1 college nnn address xn
OK
redis 127.0.0.1:6379> hgetall xxx
1) "id"
2) "1"
3) "college"
4) "nnn"
5) "address"
6) "xn"

如果您还有其他查询,例如您想做同样的事情但选择on,where college = 'nnn'那么您将不得不对数据进行非规范化。在SQL中,非规范化通常是一件坏事,但在NoSQL中,它是很常见的。

如果您的主要查询是针对名称的,但是您可能需要针对大学查询,那么您可能会执行一些操作,例如set在哈希表之外添加一个。

redis 127.0.0.1:6379> sadd college.nnn xxx
(integer) 1
redis 127.0.0.1:6379> smembers college.nnn
1) "xxx"

数据的结构是这样的,如果要查找有关进入xn大学的姓名的所有信息,则应首先选择set,然后hash根据中返回的名称选择每个信息set

您的需求通​​常会驱动您使用的设计和结构。



 类似资料:
  • 问题内容: 我现在正在为我的软件编写地址簿模块。到目前为止,我已经设置了数据库,以使其支持非常灵活的地址簿配置。 我可以为每种类型创建n个条目。类型是指“电子邮件”,“地址”,“电话”等数据。 我有一个名为“ contact_profiles”的表。 它只有两列: 然后有一个名为contact_attributes的表。这有点复杂: 我现在可以链接到这些配置文件,例如从用户表中。但是从这里我遇到了

  • 我正在尝试在DynamoDB中实现像Instagram和Facebook这样的点赞和评论系统 我有3个表,user,photo和photo_likes 用户表和照片表具有user_id和photo_id键。

  • 问题内容: 我有一个标签,其值为“ 03:48”。 我想像音乐播放器一样倒计时。我怎样才能做到这一点? 03:48 03:47 03:46 03:45 … 00:00 问题答案: 您应该看看NSDate属性timeIntervalSinceNow。您所需要做的就是使用NSDate方法dateByAddingTimeInterval将将来的日期设置为endDate ,如下所示:

  • 需求描述 有一个项目,面向学校德育评价,打算留一个发布通知的模块,现在拿不准如何设计数据库 个人方案 我个人有预想两种方案去解决 在mysql中建一个系统通知表 直接存redis中 第一种方案的优点是可以实现数据的持久化,但是对于一些时效性较强的通知【例如系统维护通知等】需要进行额外处理【因为基本上过了时效以后这条记录几乎不会再用到了】 第二种方案的优点是可以比较轻松的处理时效性问题,但是需要考虑

  • Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 目录结构CentOS /etc/redis.conf: 配置文件,用来配置 Redis 端口、数据存储、以及优化参数 /etc/redis-sentinel.conf: 哨兵配置文件,用来

  • 1、数据库设计最起码要占用这个项目开发的40%以上的时间 2、数据库设计不仅仅停留在页面demo的表面 页面内容所需字段,在数据库设计中只是一部分,还有系统运转、模块交互、中转数据、表之间的联系等等所需要的字段,因此数据库设计绝对不是简单的基本数据存储,还有逻辑数据存储。 3、数据库设计完成后,项目80%的设计开发都要存在你的脑海中 每个字段的设计都要有他存在的意义,要清楚的知道程序中如何去运用这