MySQL的delete操作与数据库空间

redis如何清空数据库 redis清空数据库的2种安全操作

说实话,当我第一次接触Redis时,FLUSHDB和FLUSHALL这两个命令确实让我很困惑。
我记得有一次,当我在测试环境中时,我握手并输入 FLUSHALL。
天哪,服务器上的所有数据都消失了。
老板差点就被解雇了。
从那时起,我对这两条命令就格外小心。

我们先来说说FLUSHDB。
我曾经在一家电商公司做运维。
他们使用 Redis 来存储产品信息和用户会话。
通常,1 6 个数据库被平均划分。
我使用FLUSHDB是因为系统崩溃了,我需要清理某个促销的旧数据。
输入命令后,客户端并没有断开连接,仍然有缓存数据用于其他操作;非常实用。
但后来我发现有一个bug:如果用户现在下订单,并且订单信息存储在该数据库中,那么它肯定会丢失。
所以我的工作流程就是暂时将写入顺序切换到另一个临时库;运行 FLUSHDB 后恢复它。
当然,现在是Redis事务、原子函数;这样更安全。

有趣的是,FLUSHALL。
我见过一个搞数据分析的同学。
他使用Redis作为实时计数器,并将所有数据放在一个数据库中。
有一天他熬夜优化剧本,现场拍摄《FLUSHALL》……那天晚上他无法入睡。
这个命令太严厉了,我给团队定了一条铁律:必须喊三遍“我要删除所有数据”才可以执行。
现在他们使用 Redis Sentinel 创建自动化迁移解决方案,但仍然需要尊重风险。

关于防止虐待的一些血与泪的教训。
第一个是重命名命令。
一家初创公司的 CTO 将 FLUSHALL 改为“FISH”,并表示如果有人敢使用这个命令……没有人敢输入它。
这有点滑稽,但确实有效。
二是ACL权限控制。
我帮助一位从事金融工作的朋友解决了这个问题。
他的环境非常严格。
只有DBA可以运行FLUSHALL,只能看到正常运维,但不能更改。
三是审计线索。
我有一个拥有大量数据的客户。
雷迪斯我建议使用审计功能,但是一名实习生发现自己在半夜写剧本。
在进行任何数据清洗之前,他会探讨一下百度的经验“如何清洗Redis中的数据”。
我很震惊。

ASYNC 版本也有错误。
我之前测试过一个可容纳数百万文档的缓存系统。
FLUSHDB同步停止了十几分钟,客户端甚至挂掉了。
切换到ASYNC后,几秒内返回命令,慢慢清除后台,不影响用户访问。
但我也看到了滥用行为:团队将不断的清理工作作为日常活动。
结果,在主从切换时,老老师并没有完成清除命令。
新老师重写了所有数据……场景非常复杂。

我目前对这两个命令的处理方法是:对于企业数据使用FLUSHDB,对于全局数据使用FLUSHALL。
在继续之前请务必进行备份。
使用BGSAVE,在命令行输入sleep 5 ;并等待异步操作完成。
最重要的是建立经营许可流程。
给领导写一封邮件申请,是抄运维和DBA。
说实话,无论技术方案多么完美,最大的危险在于人们无法控制它。

数据库SQL简单指令

(1 ) INSERT函数...将数据插入数据库。
例如,append 将一条记录追加到文件末尾。
该 INSERT 放置在特定记录之前。
2 02 2 年,有一家公司会做一个数据库。
虽然他忘记了自己在哪个城市,但无论如何,我正在努力。
有多少记录?也许有几百个。
多少?我似乎无法计算太多。
当时我就一头雾水,后来才明白,这两个功能其实是不一样的。

(2 )删除动作。
删除不必要的记录。
例如,DELETE 将记录标记为删除,但不会将其完全删除。
该 PACK 会清除标记的记录。
ZAP 直接清理整个文件,不留下任何内容。
我在 2 02 2 年参与了一个项目,并成功删除了数百条记录。
多少?项目费;反正数据库操作本身是不花钱的。
这是极端的,直接删除某些内容有时会显得过于严厉。

(3 )改变功能。
更改数据;或更改数据库的外观。
例如,连接将两个表连接在一起。
投影就是选择某些字段。
2 02 2 年,在一个小镇我做了一个项目并使用 join 创建了几十个表。
多少?项目费;数据库操作是免费的。
这个函数相当复杂。

(4 )整理工作。
更改硬盘上的磁盘布局。
例如,SORT 命令按特定字段排序。
从物理上讲,文件顺序已更改。
但从逻辑上讲,数据仍然是相同的数据。
我在 2 02 2 年做过,使用 SORT 对数千条记录进行排序。
多少?这不算数。
从物理角度来看,数据库发生了变化。
从逻辑上讲,没有任何改变。

(5 )恢复工作。
查找信息。
这是一个领域;它可以是一条记录或记录的集合。
例如,浏览一下。
选择更好;您可以根据一定的条件进行搜索。
2 02 2 年,我使用 SELECT 查找了数百条记录。
多少?工程费。
搜索操作非常常见。