IT技術互動交流平台

StackExchange.Redis加載Lua腳本進行模糊查詢的批量刪除和修改

作者|济南买菜网:hazibva  來源---陈奎元:IT165收集  發布日期-众发彩票代理:2016-12-16 20:35:32

前言

使用StackExchange.Redis沒有直接相關的方法進行模糊查詢的批量刪除和修改操作--_长江电力电子商务网,雖然可以通過Scan相關的方法進行模糊查詢--|2011qq下载,例如||章鱼彩票:HashScan('hashkey', '*key*')-掌上福彩中心app,然後再使用相關的方法進行相關的批量操作|-赢彩彩票靠谱吗,但是如果緩存數據量比較大||十堰物流云帆配货,效率低下_||诺基亚6120c软件下载,那麼可以使用Lua腳本進行模糊查詢的批量操作-|_118彩票手机开奖:ScriptEvaluate(LuaScript.Prepare(...))-16楼电影。

通過keys進行模糊查詢後的批量操作

批量刪除

 1             var redis = ConnectionMultiplexer.Connect('127.0.0.1:6379,allowAdmin = true');
 2             redis.GetDatabase().ScriptEvaluate(LuaScript.Prepare(
 3                 //Redis的keys模糊查詢_||移动旺旺:
 4                 ' local ks = redis.call('KEYS', @keypattern) ' + //local ks為定義一個局部變量--娱乐天地可以充钱吗,其中用於存儲獲取到的keys
 5                 ' for i=1,#ks,5000 do ' +    //#ks為ks集合的個數, 語句的意思||40尺框架箱尺寸: for(int i = 1; i <= ks.Count; i+=5000)
 6                 '     redis.call('del', unpack(ks, i, math.min(i+4999, #ks))) ' + //Lua集合索引值從1為起始--_赢彩彩票中奖能提现吗?,unpack為解包_孙姬林,獲取ks集合中的數據|_|妖精的尾巴洒洒,每次5000-|_双城市政府,然後執行刪除
 7                 ' end ' +
 8                 ' return true '
 9                 ),
10                 new { keypattern = 'mykey*' });

批量修改

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集合下的key進行模糊查詢後的批量操作

批量刪除

 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為可使用正則表達式

批量修改

 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為可使用正則表達式

對Set集合下的值進行模糊查詢後的批量操作

批量刪除

 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為可使用正則表達式

注意

從 Redis 2.6.0 版本開始_-长治市城区教育局,才可通過內置的 Lua 解釋器-||杜香油,使用 EVAL 命令對 Lua 腳本進行求值-35彩票诈骗客户。

延伸閱讀-亿彩堂官方下载:

Tag標簽|||直播CCTV: 腳本  
  • 專題推薦

  • Directx11 遊戲編程入門教程
  • 專題主要學習DirectX的初級編程入門學習|_掌上盒任务平台下载,對Directx11的入門及初學者有...... 詳細
  • Windows7係統入門 優化 技巧技術專題
  • Windows7係統專題 無論是升級操作係統-掌上彩票pro安卓、資料備份||_南京水货手机市场、加強資料的安全及管...... 詳細
About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯係方式
本站內容來自於互聯網,僅供用於網絡技術學習,學習中請遵循相關法律法規
快乐时时彩pc蛋蛋qq分分彩易发彩票优信彩票博发彩票

免责声明: 本站资料及图片来源互联网文章,本网不承担任何由内容信息所引起的争议和法律责任。所有作品版权归原创作者所有,与本站立场无关,如用户分享不慎侵犯了您的权益,请联系我们告知,我们将做删除处理!