在Redis 4.0中,有一个新命令UNLINK删除Redis内存中的密钥。
此命令与DEL非常相似:它将删除指定的密钥。与DEL一样,如果密钥不存在,则将其忽略。但是,该 命令在不同的线程中执行实际的内存回收 ,
因此当DEL为时 , 它不会阻塞 。这就是命令名称的来源:该命令只是将键与键空间断开链接。实际的删除将在以后异步发生。
因此,可以始终(100%次)使用UNLINK而不是DEL,因为UNLINK是非阻塞的,与DEL不同,对吗?
在讨论哪种更好之前,让我们看一下这些命令之间的区别。双方DEL
并UNLINK
释放阻塞模式的重要组成部分。区别在于他们释放价值部分的方式。
DEL
总是在阻塞模式下释放值部分。但是,如果该值太大,例如对于LIST
或分配过多HASH
,则会长时间阻止Redis。为了解决该问题,Redis实现了UNLINK
命令,即“非阻塞”删除。
其实,UNLINK
是 不是总是非阻塞/异步
。如果该值很小,例如的大小LIST
或HASH
小于64
,则该值将立即释放。这样,UNLINK
与几乎相同DEL
,除了它比花费更多的函数调用DEL
。但是,如果值很大,则Redis会将值放入列表中,并且该值将由另一个线程释放,即非阻塞释放。这样,主线程必须与后台线程进行一些同步,这也是一个代价。
总之,如果该值很小,DEL
则至少等于和UNLINK
。如果值非常大(例如,LIST
包含成千上万个项目),UNLINK
则比更好DEL
。您始终可以安全地替换DEL
为UNLINK
。但是,如果发现线程同步成为问题(多线程总是令人头疼),则可以回滚到DEL
。
我在本地回购中做了很多更改,包括删除了数千个文件,并进行了数百次更改。与此同时,我对另一台计算机进行了文件同步(只是无法访问internet),然后继续创建数千个文件,删除数千个文件,并进行数百次更改。现在回购协议运行良好,因为我从后来使用的计算机上更新了它,但当我想拉到以前的计算机上时,这就变成了一场噩梦。。。显然,我必须手动签出我删除或更改的所有文件,并恢复到最后一个头部,然后再拉。。。是否有
假设一个docker容器用'docker run'运行,然后用'docker stop'停止。“docker start”之后会执行“cmd”命令吗?
我正在编写外壳脚本,需要检查是否安装了终端应用程序。除非有更整洁的方法,否则我想使用TRY/CATCH命令来执行此操作。
本文向大家介绍Linux命令学习总结之rmdir命令,包括了Linux命令学习总结之rmdir命令的使用技巧和注意事项,需要的朋友参考一下 命令简介: rmdir命令用用来删除空目录,如果目录非空,则会出现错误。可以使用rm删除目录中的文件后,使用rmdir删除目录。也可以使用rm -rf替代rmdir命令。这是一个非常简单的命令。 命令语法: rmdir [OPTION]... DIRECTOR
本文向大家介绍Linux命令学习总结之rm命令,包括了Linux命令学习总结之rm命令的使用技巧和注意事项,需要的朋友参考一下 命令简介: rm命令用来删除Linux系统中的文件或目录。通常情况下rm不会删除目录,你必须通过指定参数-r或-R来删除目录。另外rm通常可以将该文件或目录恢复(注意,rm删除文件其实只是将指向数据块的索引点(information nodes)释放,只要不被覆盖,数据其
本文向大家介绍什么是Shell命令?,包括了什么是Shell命令?的使用技巧和注意事项,需要的朋友参考一下 Shell是Linux系统上的命令解释器。它是在终端仿真窗口中与用户交互的程序。Shell命令是指示系统执行某些操作的指令。 一些常用的shell命令是- 基本名 此命令从文件名中删除目录和后缀。打印所有已删除的前导目录组件的文件名。如果指定了尾随后缀,它也会删除尾随后缀。 基本名称的示例如