Redis4.0这个新特性,非常有用,你了解吗? Redis懒惰删除Unlink命令 Redis清空数据库异步化 Redis其他

日期:2019-11-11 11:02:31 来源:互联网 编辑:小TT 阅读人数:667

我们常说Redis是单线程的服务,单线程的好处非常明显,首先是代码逻辑更加简单,服务更加稳定,但同时,单线程也引来一些问题,例如做一些非常重的操作的时候,其他的任务就会受到影响,有一些非常重要的操作,其实可以多线程来做,例如进行数据的备份,或者删除一个非常大的字典的时候,同步做的意义并不是很大。

为了解决这个问题,Redis还有一些异步线程进行工作,让Redis更加高效,我们称之为Lazyfree机制。

Redis4.0这个新特性,非常有用,你了解吗? Redis懒惰删除Unlink命令 Redis清空数据库异步化 Redis其他异步删除 总结(图1)

Redis懒惰删除Unlink命令

在Redis命令中,提供了一个新的删除命令,Unlink。其实在现实生活中,这种懒惰删除在现实生活中非常的常见,例如饭店晚上要打烊的时候,并不会立马赶走店里的客人,打扫卫生,而是现在门口挂出打烊的标识,再在里面慢慢地收拾,Redis的Unlink命令也是如此。例如我们对一个字典执行Unlink命令的执行步骤如下:先从字典的条目中把这个key拿下

获取字典总共有多少个值

如果个数较少,值执行同步删除,否则原子增加待惰性删除的条目

将字典提交给惰性删除队列

返回删除成功

Redis4.0这个新特性,非常有用,你了解吗? Redis懒惰删除Unlink命令 Redis清空数据库异步化 Redis其他异步删除 总结(图2)

Redis清空数据库异步化

我们都知道,如果我们要把整个Redis里面所有的数据删除的话,也是非常需要时间的,同理,Redis的删除命令也可以进行异步化。当执行删除命令的时候,Redis会把数据库的字典指向新的字典,把旧的数据提交到异步的线程进行处理。

Redis其他异步删除

在此之前,我们介绍过Redis的一些内存淘汰与过期的策略。例如Redis的过期策略有主动删除跟被动删除两种不同的策略,Redis4.0为我们提供新的配置项,可以在在删除的时候开启异步删除。这里需要注意的是,并不是开启一个线程去不停扫描那些key过期。

Redis4.0这个新特性,非常有用,你了解吗? Redis懒惰删除Unlink命令 Redis清空数据库异步化 Redis其他异步删除 总结(图3)

总结

Redis的异步删除,其实在我们日常的中,也可以进行借鉴。例如电商中,商家要给所有买过自己商品的用户派发一张优惠券,这个逻辑,非常地重,需要读取用户(例如需要读取用户的基本信息)订单(查询用户的订单)优惠(查看优惠券的数量跟优惠券的详情)Push(推送用户领到新的优惠券了,可以查看了)等多个,如果我们同步做,可能用户点一次派发用券,要花好几个小时,而且可能伴随着各种超时,一般我们都是把这种需求这样做,提供一个任务队列,当商家床架完任务的时候,就把任务丢到队列里面,告诉商家说任务提交成功,后台再慢慢进行优惠券派发,最后商家发送成功。

本文相关词条概念解析:

删除

删除:指将已经不需要了的文件从系统的目录清单中删掉,以腾出磁盘空间给别的操作。在计算机中的大部分“彻底”删除就是将其从列表除名,并可以被其他文件覆写。所以误删后不要乱动,还有希望恢复!为了保险起见,用户最好养成对自己输入的文本或其它文件进行软盘备份,以防万一。

延伸 · 推荐

Redis主从复制以及其原理 概述 主从复制 主从复制原理

概述在现有企业中80%公司大部分使用的是redis单机服务,在实际的场景当中单一节点的redis容易面临风险。面临问题机器故障。我们部署到一台 Redis ,当发生机器故障时,需要迁移到另外一台并且要...

KeyDB——据说是比Redis快5倍的中间件,为啥这么快? 线程模型 链接管理 锁机制 Active-Replica

KeyDB项目是从redis fork出来的分支。众所周知redis是一个单线程的kv内存存储,而KeyDB在100%兼容redis API的情况下将redis改造成多线程。线程模型KeyDB将red...

网友评论
钢琴上的小
钢琴上的小
虽然管理起来很清晰,但是单个操作设计到多张表的时候,数据管理就显得有点麻烦
2020-05-22 21:29 806
委屈art
委屈art
而Nosql查询以块为单元操作数据,使用的是非结构化查询语言(UnQl),它是没有标准的
2020-05-26 16:13 166
我的豪气只
我的豪气只
存储扩展这可能是两者之间最大的区别,关系型数据库是纵向扩展,也就是说想要提高处理能力,要使用速度更快的计算机
2020-05-24 23:23 340
阿里不是你
阿里不是你
php redis做mysql的缓存,怎么异步redis同步到mysql数据库?
2020-05-21 06:39 29
ljc1982020
ljc1982020
这里要说明的是bgsave和save这两个操作无法同时进行,因为会出现竞争条件
2020-05-23 22:23 118
阿木的吃货
阿木的吃货
分别如下所示列表对象集合对象(同列表)集合对象
2020-05-25 20:22 565
宝贝猪猪52
宝贝猪猪52
关系型数据库使用预定义优化方式(比如索引)来加快查询操作,而Nosql更简单更精确的数据访问模式
2020-05-26 15:33 314
尾狐的自由
尾狐的自由
仅支持key、string、hash、list、set几种结构,优点
2020-05-26 15:56 902
米老鼠_18
米老鼠_18
存储结构关系型数据库对应的是结构化数据,数据表都预先定义了结构(列的定义),结构描述了数据的形式和内容
2020-05-30 02:47 400
anderuu
anderuu
在面对高并发读写性能非常差,面对海量数据的时候效率非常低
2020-05-21 03:31 271
鹰飛去tic
鹰飛去tic
Memcached只能作为缓存,Redis不仅可以缓存,而且还可以作为数据库用
2020-05-24 06:42 806
chenqi159
chenqi159
它的使用场景主要有以下几个
2020-05-23 07:07 944
miss大大
miss大大
mongodb数据存储在磁盘,只有在需要时通过mmap映射到内存,在内存中修改,修改完毕由操作系统负责flush到磁盘
2020-05-27 16:53 249
不要用真名
不要用真名
但,对于某些没有关联少,且需要高频率读写,我们使用Redis就能够很好的提高整个体统的并发能力
2020-05-25 18:22 777
亚芬1953
亚芬1953
受内存限制无法存储过多的数据,也无法提供强大的查询,只使用单核
2020-05-26 19:02 50
非飞鱼11
非飞鱼11
数据多的时候为什么要使用redis而不用mysql?
2020-05-22 13:56 331
相关文章
住培行动,疫情就是命令,你要问我你去上班吗

住培行动,疫情就是命令,你要问我你去上班吗

住培行动,疫情就是命令,你要问我你去上班吗[详情]

售8.29-9.49万,U70新增车型上市

售8.29-9.49万,U70新增车型上市

售8.29-9.49万,U70新增车型上市[详情]

回收站不小心清空了,回车即可进入,实用值得收藏

回收站不小心清空了,回车即可进入,实用值得收藏

回收站不小心清空了,回车即可进入,实用值得收藏[详情]

网站地图    Copyright     2016-2018  资讯网   All rights reserved.