数据库与缓存


一.Mysql(关系形数据库)

1.建表

(1).物理外键与逻辑外键

我们在定义两张表(user/userInfon)的关系时,学校教我们的是用foreign key 去创建,这种是物理外键。
而逻辑外键就是两者必然的关联但是没有foreign key 来关联,而是在设计两张表的时候创建字段去存储相关联的数据内容。
如,user(用户表)中存在user_id(用户id)字段,userInfon(用户信息表)中也存在user_id(用户id)字段,
这样就可以通过
'select * from user inner join userInfon on user.user_id = userInfon.user_id,
这样的sql语句来实现逻辑查询
在这里插入图片描述

物理外键的缺陷
为何说所有物理外键删除,因为外键有性能问题:

1.数据库需要维护外键的内部管理;

2.外键等于把数据的一致性事务实现,全部交给数据库服务器完成;

3.有了外键,当做一些涉及外键字段的增,删,更新操作之后,需要触发相关操作去检查,而不得不消耗资源;

4.外键还会因为需要请求对其他表内部加锁而容易出现死锁情况


二.redis(键值存储型数据库)

1.如何保证数据一致

用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大。

当第一次查询某个分类的菜品时,会从数据为中进行查询,同时将查询的结果存储到Redis中,在后绪的访问,若查询相同分类的菜品时,直接从Redis缓存中查询,不再查询数据库。

当在后台修改菜品数据时,为了保证Redis缓存中的数据和数据库中的数据时刻保持一致,当修改后,需要清空对应的缓存数据。用户再次访问时,还是先从数据库中查询,同时再把查询的结果存储到Redis中,这样,就能保证缓存和数据库的数据保持一致。


三.总结

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值