带你了解DBMS的前世今生?

等等,昨天我在帮隔壁王先生修电脑,他保存照片的硬盘突然蓝屏,数据全是乱码。
他急得满头大汗,说这些照片是儿子刚从国外带回来的。
我打开一看,发现Access数据库有问题。
这位老人平时就喜欢用这个。
他保存旅行指南和食谱。
没想到这么无忧无虑。
不像他们公司用的Oracle,已经用了十几年了,换了好几代电脑都没有任何问题。
这突然让我想到,如果DBMS选错了,关键时刻真的会丧命。
就像我表弟当年选择的键值数据库一样,当公司想要查看历史订单时,立刻就卡住了。
最后,老老实实地又回到了使用SQL Server。

redis和mysql有什么区别

说白了,Redis和MySQL的区别就像跑车和卡车一样——一个追求极限速度,一个注重负载能力。

从存储模型来看,Redis是内存中的键值对。
我们去年做的一个项目,使用Redis来存储配置项,在闪购期间每秒可以处理大约3 000次点击; MySQL是磁盘上的表,就像淘宝商品库一样,表结构需要提前想好,否则数据导入会失败。

在读写速度方面,Redis采用的是内存操作。
去年的测试中,单线程每秒可以达到6 万个请求; MySQL依赖于磁盘,如果3 00GB的数据查询没有适当优化,它可能会挂起1 0秒以上。
一开始我以为MySQL慢是因为索引的原因,后来发现事实并非如此。
我被磁盘 I/O 阻碍了——用行话来说,这称为雪崩效应。
事实上,前面的一点点延迟就导致了后面的一切。

说到并发,Redis的单线程是通过事件循环来理解并发的,在双十一这样的场景下人们依然可以快速工作; MySQL多线程很好,但是去年我们用它进行高并发写入时,主从之间的延迟飙升到5 秒。
很多人没有注意到这一点。
等等,还有一件事。
Redis的发布/订阅功能特别适合消息队列。
去年我们获得限时抢购系统时,我们用它来发送消息。
比Kafka简单多了。

就可扩展性而言,Redis 分片操作就像搭建乐高。
去年分裂成8 个节点,直接把QPS数带到了8 万。
MySQL 复制分片很复杂。
主数据库写入延迟 2 秒是常态,坦率地说,这相当令人不安。
在数据持久化方面,Redis是按需配置的。
如果您使用的是 RDB 快照,则清晨备份就足够了; MySQL默认使用full同步。
为了提高写入性能,我们将innodb_flush_log_at_trx_commit设置为2 这导致数据丢失3 次。
这个项目值得一试。

最后一点提醒:使用 Redis 进行缓存时,请务必设置过期日期。
去年,一个项目忘记清理过期密钥,导致内存爆炸。

linux键值有什么作用

嘿,你在说什么?我不明白。
但当我在Linux上摆弄服务器时,遇到了很多陷阱。

我们来谈谈环境变量。
这个东西很实用。
记得以前在各地做维护的时候,首先要查清楚对方机器的PATH是什么。
否则,如果你复制了一个脚本,但它不起作用,那就太可惜了!记得有一个冬天,在偏远山区的一间小机房里,网线一片狼藉。
我花了很长时间试图找到一根好的电缆。
后来发现别人系统的PATH里少了一个目录,所以我的小脚本无法安装。
只需将其添加回来,一切都会好起来的。

还有HOME变量,这个变量也很重要。
默认情况下,当用户登录时,他们位于主目录中。
如果出错,用户将不得不去错误的位置查找文件。
之前做一个外包项目,看到一个兄弟误解了一个重要用户的HOME。
这丢失了所有用户文件,我非常担心。
我花了两个小时才恢复过来,那天晚上我几乎无法回去。

我还没有深入研究内核中的键值对。
但我明白,系统这么大,需要有一个高效的管理方法。
你提到的文件系统元数据、网络协议栈等听起来相当复杂。
无论如何,我知道内核优化必须基于数据结构。
不管它们用得好不好,性能都会差很多倍。

我以前遇到过输入设备。
当时我家里的电脑键盘坏了,所以我买了一个新键盘。
当我插入它时,我发现一些按钮映射错误。
例如,当我按下Caps Lock时,我以为是Ctrl,这导致我不断地写错字。
后来我用xmodmap改了一下,问题就解决了。
Nowadays, the gaming keyboards and mechanical keyboards used by young people may have more complicated function keys and macro keys, and key value mapping is definitely more problematic.
你说的Redis我没用过。
但我知道现在很多系统都喜欢使用这种类型的键值数据库来进行缓存等。
它真的很快。
我们之前有一个项目使用Redis来存储会话数据。
用户可以立即登录和退出,没有任何延迟。
这比事先直接检查数据库要好得多。
嘿,但是Redis需要你建立一个单独的服务器,维护起来相当繁琐。

总之,Linux中的键值对有很多用途。
当您总结过程通信、系统配置和输入识别是密不可分的联系时,您是对的。
这个东西用得好的话,系统肯定运行得流畅。
但是,如何使用它取决于您的情况。
不要盲目改变。
更改它会削弱系统。
这不是玩笑。