IT技(ji)術(shu)互動交流平台

五分11选5官网

作者︰hazibva  來源︰IT165收(shou)集  發布(bu)日(ri)zhang)冢016-12-16 20:35:32

五分11选5官网

使用StackExchange.Redis沒有直接相(xiang)關的(de)方法進行模糊查詢的(de)批量(liang)刪除和修改操作,雖然可以(yi)通過Scan相(xiang)關的(de)方法進行模糊查詢,例如︰HashScan('hashkey', '*key*'),然後再使用相(xiang)關的(de)方法進行相(xiang)關的(de)批量(liang)操作,但是如果緩存數據量(liang)比較大,效(xiao)率shi)拖攏 敲純梢yi)使用Lua腳本進行模糊查詢的(de)批量(liang)操作︰ScriptEvaluate(LuaScript.Prepare(...))。

通過keys進行模糊查詢後的(de)批量(liang)操作

五分11选5官网

 1  var redis = ConnectionMultiplexer.Connect('127.0.0.1:6379,allowAdmin = true'); 2  redis.GetDatabase().ScriptEvaluate(LuaScript.Prepare( 3   //Redis的(de)keys模糊查詢︰ 4   ' local ks = redis.call('KEYS', @keypattern) ' + //local ks為定義一個局部變量(liang),其(qi)中用于存儲(chu)獲取到的(de)keys 5   ' for i=1,#ks,5000 do ' + //#ks為ks集合(he)的(de)個數, 語句的(de)意思︰ for(int i = 1; i <= ks.Count; i+=5000) 6   ' redis.call('del', unpack(ks, i, math.min(i+4999, #ks))) ' + //Lua集合(he)索引值(zhi)從(cong)1為起始,unpack為解包(bao),獲取ks集合(he)中的(de)數據,每次5000,然後執行刪除 7   ' end ' + 8   ' return true ' 9   ),10   new { keypattern = 'mykey*' });

五分11选5官网

1  redis.GetDatabase().ScriptEvaluate(LuaScript.Prepare(2   ' local ks = redis.call('KEYS', @keypattern) ' + 3   ' for i=1,#ks do ' + 4   ' redis.call('set', ks[i], @value) ' +5   ' end ' +6   ' return true '),7   new { keypattern = 'mykey*', value = 'setval' });

對Hash集合(he)下的(de)key進行模糊查詢後的(de)批量(liang)操作

五分11选5官网

 1  redis.GetDatabase().ScriptEvaluate(LuaScript.Prepare( 2   ' local ks = redis.call('hkeys', @hashid) ' + 3   ' local fkeys = {} ' + 4   ' for i=1,#ks do ' + 5   //使用string.find進行匹配操作 6   ' if string.find(ks[i], @keypattern) then ' + 7   ' fkeys[#fkeys + 1] = ks[i] ' + 8   ' end ' + 9   ' end ' +10   ' for i=1,#fkeys,5000 do ' +11   ' redis.call('hdel', @hashid, unpack(fkeys, i, math.min(i+4999, #fkeys))) ' +12   ' end ' +13   ' return true '14   ),15   new { hashid = 'hkey', keypattern = '^mykey' }); //keypattern為可使用正則(ze)表(biao)達(da)式

五分11选5官网

 1  redis.GetDatabase().ScriptEvaluate(LuaScript.Prepare( 2   ' local ks = redis.call('hkeys', @hashid) ' + 3   ' local fkeys = {} ' + 4   ' for i=1,#ks do ' + 5   ' if string.find(ks[i], @keypattern) then ' + 6   ' fkeys[#fkeys + 1] = ks[i] ' + 7   ' end ' + 8   ' end ' + 9   ' for i=1,#fkeys do ' +10   ' redis.call('hset', @hashid, fkeys[i], @value) ' +11   ' end ' +12   ' return true '13   ),14   new { hashid = 'hkey', keypattern = '^key', value = 'hashValue' }); //keypattern為可使用正則(ze)表(biao)達(da)式

對Set集合(he)下的(de)值(zhi)進行模糊查詢後的(de)批量(liang)操作

五分11选5官网

 1  redis.GetDatabase().ScriptEvaluate(LuaScript.Prepare( 2   ' local ks = redis.call('smembers', @keyid) ' + 3   ' local fkeys = {} ' + 4   ' for i=1,#ks do ' + 5   ' if string.find(ks[i], @keypattern) then ' + 6   ' fkeys[#fkeys + 1] = ks[i] ' + 7   ' end ' + 8   ' end ' + 9   ' for i=1,#fkeys,5000 do ' +10   ' redis.call('srem', @keyid, unpack(fkeys, i, math.min(i+4999, #fkeys))) ' +11   ' end ' +12   ' return true '13   ),14   new { keyid = 'setkey', keypattern = '^myval' }); //keypattern為可使用正則(ze)表(biao)達(da)式

五分11选5官网

從(cong) Redis 2.6.0 版本開始,才可通過內置的(de) Lua 解釋(shi)器,使用 EVAL 命令(ling)對 Lua 腳本進行求值(zhi)。

Tag標簽︰腳本  
  • 五分11选5官网

About IT165 - 廣告服(fu)務 - 大福彩票官网隱私聲(sheng)明 - 版權(quan)申明 - 免責條(tiao)款 - 網站地圖 - 網友投稿 - 聯(lian)系方式
本站內容來自(zi)于互聯(lian)網,僅供(gong)用于網絡技(ji)術(shu)學習,學習中請遵循(xun)相(xiang)關法律法規
五分11选5官网 | 下一页