自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Redis4.0這個新特性,非常有用,你了解嗎?

數據庫 其他數據庫 Redis
我們常說Redis是單線程的服務,單線程的好處非常明顯,首先是代碼邏輯更加簡單,服務更加穩(wěn)定,但同時,單線程也引來一些問題,例如做一些非常重的操作的時候,其他的任務就會受到影響,有一些非常重要的操作,其實可以多線程來做,例如進行數據的備份,或者刪除一個非常大的字典的時候......

我們常說Redis是單線程的服務,單線程的好處非常明顯,首先是代碼邏輯更加簡單,服務更加穩(wěn)定,但同時,單線程也引來一些問題,例如做一些非常重的操作的時候,其他的任務就會受到影響,有一些非常重要的操作,其實可以多線程來做,例如進行數據的備份,或者刪除一個非常大的字典的時候,同步做的意義并不是很大。

為了解決這個問題,Redis還有一些異步線程進行工作,讓Redis更加高效,我們稱之為Lazyfree機制。

 

[[274927]]

 

 

Redis懶惰刪除Unlink命令

在Redis命令中,提供了一個新的刪除命令,Unlink。其實在現實生活中,這種懶惰刪除在現實生活中非常的常見,例如飯店晚上要打烊的時候,并不會立馬趕走店里的客人,打掃衛(wèi)生,而是現在門口掛出打烊的標識,然后再在里面慢慢地收拾,Redis的Unlink命令也是如此。例如我們對一個字典執(zhí)行Unlink命令的執(zhí)行步驟如下:

  • 先從字典的條目中把這個key拿下
  • 獲取字典總共有多少個值
  • 如果個數較少,值執(zhí)行同步刪除,否則原子增加待惰性刪除的條目
  • 將字典提交給惰性刪除隊列
  • 返回刪除成功

 

[[274928]]

 

 

Redis清空數據庫異步化

我們都知道,如果我們要把整個Redis里面所有的數據刪除的話,也是非常需要時間的,同理,Redis的刪除命令也可以進行異步化。當執(zhí)行刪除命令的時候,Redis會把數據庫的字典指向新的字典,然后把舊的數據提交到異步的線程進行處理。

Redis其他異步刪除

在此之前,我們介紹過Redis的一些內存淘汰與過期的策略。例如Redis的過期策略有主動刪除跟被動刪除兩種不同的策略,Redis4.0為我們提供新的配置項,可以在在刪除的時候開啟異步刪除。這里需要注意的是,并不是開啟一個線程去不停掃描那些key過期。

 

Redis4.0這個新特性,非常有用,你了解嗎?

 

 

總結

Redis的異步刪除,其實在我們日常的開發(fā)中,也可以進行借鑒。例如電商系統(tǒng)中,商家要給所有買過自己商品的用戶派發(fā)一張優(yōu)惠券,這個邏輯,非常地重,需要讀取用戶系統(tǒng)(例如需要讀取用戶的基本信息)、訂單系統(tǒng)(查詢用戶的訂單)、優(yōu)惠系統(tǒng)(查看優(yōu)惠券的數量跟優(yōu)惠券的詳情)、Push系統(tǒng)(推送用戶領到新的優(yōu)惠券了,可以查看了)等多個系統(tǒng),如果我們同步做,可能用戶點一次派發(fā)用券,要花好幾個小時,而且可能伴隨著各種超時,一般我們都是把這種需求這樣做,提供一個任務隊列,當商家床架完任務的時候,就把任務丟到消息隊列里面,告訴商家說任務提交成功,然后后臺再慢慢進行優(yōu)惠券派發(fā),最后通知商家發(fā)送成功。

Redis,這個小而精的項目,有很多設計的思想值得學習,歡迎大家關注我,共同學習,共同進步。大家的支持是我繼續(xù)嘮嗑的動力。 

 

責任編輯:龐桂玉 來源: 今日頭條
相關推薦

2020-10-29 10:00:55

Python函數文件

2012-03-01 09:15:41

HTML 5

2013-06-14 14:57:09

Java基礎代碼

2019-05-20 13:45:15

MySQL新特性數據庫

2020-08-27 10:10:46

NodeJs 軟件Express

2023-02-19 15:22:22

React技巧

2011-04-06 14:08:14

jQuery

2009-03-24 14:23:59

PHP類庫PHP開發(fā)PHP

2011-07-07 17:16:43

PHP

2017-08-02 13:32:18

編程Java程序片段

2010-07-30 09:07:12

PHP函數

2013-08-13 10:46:51

LinuxLinux命令

2023-06-13 15:15:02

JavaScript前端編程語言

2018-08-03 10:02:05

Linux命令

2021-10-30 18:59:15

Python

2012-05-25 14:20:08

JavaScript

2022-09-02 23:08:04

JavaScript技巧開發(fā)

2023-11-02 11:55:37

工具網站開發(fā)

2013-08-12 15:00:24

LinuxLinux命令

2021-03-09 09:14:27

ES2019JavaScript開發(fā)
點贊
收藏

51CTO技術棧公眾號