redis實(shí)現(xiàn)刪除list中特定索引的值
redis刪除list中特定索引的值
Redis可以通過(guò)LINDEX key index獲取list中的特定值, 但無(wú)法直接刪除特定索引下的值.
LSET與LREM結(jié)合刪除list中特定索引的值
兩步:
- 先用LSET在指定索引位置上設(shè)置特殊值: LSET key index value在指定索引位置的值替換為value
- 再用LREM刪除該特殊值: LREM key n value, 從左邊刪除n個(gè)value
例如:刪除list1索引3對(duì)應(yīng)的在值
LSET list1 3 del LREM list1 1 del
補(bǔ)充
在Redis中, list是雙向鏈表有兩種索引:
- 正向索引: 0, 1, 2, 3, ...
- 逆向索引: -1, -2, -3, ...
與刪除的相關(guān)的操作有:
- LPOP / RPOP key: 從左邊/右邊彈出一個(gè)值
- LREM key n value: 從左邊刪除n個(gè)value
- LTRIM key begin-index, end-index: 僅保留指定區(qū)間的元素
Redis的區(qū)間都是閉區(qū)間, [begin-index, end-index]
redis對(duì)于刪除list中的某個(gè)元素
近期要接im,我們的信息都是放到redis的緩存中,結(jié)構(gòu)為list,如果知道特定的值的話,通過(guò)LREM key count value這樣就可以。對(duì)于redis的list結(jié)構(gòu),獲取某個(gè)位置的值通過(guò) LINDEX key index,如果想要獲取list的長(zhǎng)度,通過(guò)LLEN key來(lái)獲取。對(duì)于list中特定值的刪除。
我們打算獲取全部的list中全部的內(nèi)容,然后便來(lái)你找到要?jiǎng)h除的值,通過(guò)LREM key count value 刪除。
LREM key count value
根據(jù)參數(shù) count 的值,移除列表中與參數(shù) value 相等的元素。
count的值可以是以下幾種:
- count > 0 : 從表頭開(kāi)始向表尾搜索,移除與 value 相等的元素,數(shù)量為 count 。
- count < 0 : 從表尾開(kāi)始向表頭搜索,移除與 value 相等的元素,數(shù)量為 count 的絕對(duì)值。
- count = 0 : 移除表中所有與 value 相等的值。
自己寫(xiě)了個(gè)lua腳本,做了一個(gè)刪除的過(guò)程:
local result={} --list key local key="test" local size=0 redis.call("select",2) -- 長(zhǎng)度 local length=redis.call("llen",key) -- 要?jiǎng)h除的value local findKey="msg:382"; if(length>0)then --獲取去全部的list local values=redis.call("Lrange",key,0,length-1) local index=-1 for i = 1, length,1 do if(string.find(values[i],findKey)) then index=i redis.call("LREM",key,0,values[i]) break end end return true else return false end
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Redis server 主從復(fù)制配置實(shí)現(xiàn)
從復(fù)制是指將一個(gè)Redis服務(wù)器的數(shù)據(jù)復(fù)制到其他Redis服務(wù)器的過(guò)程,本文主要介紹了Redis server 主從復(fù)制配置實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02Go語(yǔ)言操作RediSearch進(jìn)行搜索方法示例詳解
這篇文章主要為大家介紹了Go語(yǔ)言操作RediSearch進(jìn)行搜索方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12淺談Redis存儲(chǔ)數(shù)據(jù)類型及存取值方法
這篇文章主要介紹了淺談Redis存儲(chǔ)數(shù)據(jù)類型及存取值方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Redis之SDS數(shù)據(jù)結(jié)構(gòu)的使用
本文主要介紹了Redis之SDS數(shù)據(jù)結(jié)構(gòu)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08基于Redis實(shí)現(xiàn)共享Session登錄的實(shí)現(xiàn)
本文主要介紹了基于Redis實(shí)現(xiàn)共享Session登錄的實(shí)現(xiàn),包括發(fā)送短信驗(yàn)證碼、短信驗(yàn)證碼登錄和注冊(cè)、以及登錄狀態(tài)校驗(yàn)的流程,具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03無(wú)法啟動(dòng)Redis打開(kāi)redis-server閃退的問(wèn)題解決辦法
正常開(kāi)啟redis服務(wù),首先要啟動(dòng)redis-server.exe,但是閃退,導(dǎo)致無(wú)法開(kāi)啟redis服務(wù),這篇文章主要給大家介紹了關(guān)于無(wú)法啟動(dòng)Redis打開(kāi)redis-server閃退問(wèn)題的解決辦法,需要的朋友可以參考下2024-07-07Redis集群擴(kuò)容的實(shí)現(xiàn)示例
本文介紹了在虛擬機(jī)上新建Redis集群,并將新增節(jié)點(diǎn)加入現(xiàn)有集群,通過(guò)配置文件和`redis-cli`命令,成功實(shí)現(xiàn)了Redis集群的擴(kuò)容,感興趣的可以了解一下2025-02-02基于redis.properties文件的配置及說(shuō)明介紹
今天小編就為大家分享一篇基于redis.properties文件的配置及說(shuō)明介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Redis?生成分布式業(yè)務(wù)單號(hào)的實(shí)現(xiàn)
在業(yè)務(wù)系統(tǒng)中很多場(chǎng)景下需要生成不重復(fù)的ID,本文主要介紹了Redis生成分布式業(yè)務(wù)單號(hào)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04