新聞中心
Redis 是一款開源的內(nèi)存數(shù)據(jù)庫,采用 KEY-value 的存儲方式,廣泛使用來存儲文本、圖片、視頻等各類非結(jié)構(gòu)化數(shù)據(jù)。由于是基于內(nèi)存的存儲方式,redis 對于性能的要求非常高,因此在數(shù)據(jù)寫入上,為了避免多余的重復(fù)寫入,Redis 將采用一定的處理策略進行重復(fù)數(shù)據(jù)寫入的處理,以滿足多用戶需求。

一、利用 redis 進行重復(fù)數(shù)據(jù)寫入剔除使用命令 SETNX 進行處理 。SETNX 命令是 set if not exist(如果不存在)的縮寫,功能是只有在 key 不存在時,才對 key 進行設(shè)置操作。因此可以利用這個特性,如果 Redis 中 key 的值已經(jīng)存在,就不會再去替換重復(fù)的數(shù)據(jù)。
例子:
127.0.0.1:6379> SETNX mykey “Hello world”
(integer) 1
127.0.0.1:6379> SETNX mykey “Redis”
(integer) 0
上面的例子中,key 為 mykey,當?shù)谝淮螌懭?“Hello world” 時返回 1,表示 key 不存在,設(shè)置成功,當?shù)诙螌懭?“Redis” 時,返回 0,表示該 key 已經(jīng)存在,設(shè)置失敗。
二、利用 redis 的事務(wù)處理進行重復(fù)數(shù)據(jù)寫入的處理。Redis 也支持事務(wù)的功能,可以結(jié)合 MULTI、EXEC、WATCH 這三個命令實現(xiàn)事務(wù)的處理,它們分別為:MULTI:用來開始一個事務(wù),EXEC:用來提交一個事務(wù),WATCH:用于監(jiān)視一個或多個 key,也就是說,在 EXEC 命令之前,Redis 會自動監(jiān)視列表中所有 key,如果其中任何一個 key 在 EXEC 之前被其他客戶端改變,那么執(zhí)行 EXEC 命令失敗,當用戶發(fā)出 multi 指令后,可以在 watch 命令里面對所有要寫入的 key 進行監(jiān)控,一旦值被其他客戶端改變,后續(xù)的命令將不被執(zhí)行。
例子:
127.0.0.1:6379> WATCH mykey
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> SET mykey “Redis”
QUEUED
127.0.0.1:6379> EXEC
(nil)
上面的例子中,在執(zhí)行 EXEC 命令前監(jiān)控了 mykey,因此當執(zhí)行 SET mykey “Redis” 時,因為 redis 中沒有 mykey 的 key,所以執(zhí)行 EXEC 命令,返回結(jié)果為 nil。
以上就是 redis 中處理重復(fù)數(shù)據(jù)寫入的處理策略,即通過 SETNX 和事務(wù)功能來決定是否處理寫入成功,并使 Redis 的性能保持穩(wěn)定。
成都服務(wù)器租用選創(chuàng)新互聯(lián),先試用再開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價格厚道的香港/美國云服務(wù)器和獨立服務(wù)器。物理服務(wù)器托管租用:四川成都、綿陽、重慶、貴陽機房服務(wù)器托管租用。
網(wǎng)站欄目:Redis中的數(shù)據(jù)重復(fù)寫入處理策略(redis 重復(fù)寫入)
本文URL:http://m.fisionsoft.com.cn/article/cdghhji.html


咨詢
建站咨詢
