日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

redis 用scan 代替keys,hgetAll

發布時間:2023/12/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis 用scan 代替keys,hgetAll 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自:https://blog.csdn.net/w05980598/article/details/80264568

?

?

?

?眾所周知,當redis中key數量越大,keys 命令執行越慢,而且最重要的會阻塞服務器,對單線程的redis來說,簡直是災難,終于找到了替代命令scan。

? ? ??

SCAN cursor [MATCH pattern] [COUNT count]

SCAN?命令及其相關的?SSCAN?命令、?HSCAN?命令和?ZSCAN?命令都用于增量地迭代(incrementally iterate)一集元素(a collection of elements):

  • SCAN?命令用于迭代當前數據庫中的數據庫鍵。
  • SSCAN?命令用于迭代集合鍵中的元素。
  • HSCAN?命令用于迭代哈希鍵中的鍵值對。
  • ZSCAN?命令用于迭代有序集合中的元素(包括元素成員和元素分值)。

以上列出的四個命令都支持增量式迭代, 它們每次執行都只會返回少量元素, 所以這些命令可以用于生產環境, 而不會出現像?KEYS命令、?SMEMBERS?命令帶來的問題 —— 當?KEYS?命令被用于處理一個大的數據庫時, 又或者?SMEMBERS?命令被用于處理一個大的集合鍵時, 它們可能會阻塞服務器達數秒之久。

不過, 增量式迭代命令也不是沒有缺點的: 舉個例子, 使用?SMEMBERS?命令可以返回集合鍵當前包含的所有元素, 但是對于?SCAN?這類增量式迭代命令來說, 因為在對鍵進行增量式迭代的過程中, 鍵可能會被修改, 所以增量式迭代命令只能對被返回的元素提供有限的保證 (offer limited guarantees about the returned elements)。

因為?SCAN?、?SSCAN?、?HSCAN?和?ZSCAN?四個命令的工作方式都非常相似, 所以這個文檔會一并介紹這四個命令, 但是要記住:

  • SSCAN?命令、?HSCAN?命令和?ZSCAN?命令的第一個參數總是一個數據庫鍵。
  • 而?SCAN?命令則不需要在第一個參數提供任何數據庫鍵 —— 因為它迭代的是當前數據庫中的所有數據庫鍵。
scan 0?默認返回10條數據。 127.0.0.1:6379> scan 0
1) "81920"
2) ?1) "CMD:1000004739:4"
? ? 2) "CMD:1000010475:2"
? ? 3) "CMD:380071400001208:766"
? ? 4) "CMD:1000006866:LIST"
? ? 5) "CMD:380071400001208:20415"
? ? 6) "CMD:380071400001231:21530"
? ? 7) "CMD:380071400001208:21780"
? ? 8) "CMD:7485630165:LIST"
? ? 9) "CMD:1000001545:2"
? ?10) "CMD:380071400001231:4387" 可以用count 參數指定返回數據量: 127.0.0.1:6379>?scan 0 count 100
1) "104448"
2) ? 1) "CMD:1000004739:4"
? ? ?2) "CMD:1000010475:2"
? ? ?3) "CMD:380071400001208:766"
? ? ?4) "CMD:1000006866:LIST"
? ? ?5) "CMD:380071400001208:20415"
? ? ?6) "CMD:380071400001231:21530"
? ? ?7) "CMD:380071400001208:21780"
? ? ?8) "CMD:7485630165:LIST"
? ? ?9) "CMD:1000001545:2"
? ? 10) "CMD:380071400001231:4387"
? ? ......
? ? 94) "CMD:201610200062:6"
? ? 95) "CMD:VF3748211006:3"
? ? 96) "CMD:1000009121:4"
? ? 97) "CMD:380071400001231:6563"
? ? 98) "CMD:1000010252:ID"
? ? 99) "CMD:1000005261:5"
? ?100) "SERVER:45568_0" 使用match 參數來匹配模式: 127.0.0.1:6379>?scan 0 match CMD* count 100
1) "104448"
2) ?1) "CMD:1000004739:4"
? ? 2) "CMD:1000010475:2"
? ? 3) "CMD:380071400001208:766"
? ? 4) "CMD:1000006866:LIST"
? ? 5) "CMD:380071400001208:20415"
? ? 6) "CMD:380071400001231:21530"
? ? 7) "CMD:380071400001208:21780"
? ? 8) "CMD:7485630165:LIST"
? ? 9) "CMD:1000001545:2"
? ?10) "CMD:380071400001231:4387"
? ?......
? ?86) "CMD:201610200062:6"
? ?87) "CMD:VF3748211006:3"
? ?88) "CMD:1000009121:4"
? ?89) "CMD:380071400001231:6563"
? ?90) "CMD:1000010252:ID"
? ?91) "CMD:1000005261:5" 最重要的是scan不會阻塞服務器,現網環境也可以用,真方便。 官方文檔:http://redisdoc.com/key/scan.html#scan 上java 代碼? /*** * HSCAN 命令用于迭代哈希鍵中的鍵值對。* @Title: getSortedSetSize* @Description:* @param key* @return* @return long* @author 2019-1-16 上午10:17:03*/public static Map<String, String> hscan(int dbIndex,String key,int pageSize){Map<String, String> map = new HashMap<String, String>();Jedis jedis = null; try {jedis = getJedis();jedis.select(dbIndex);ScanParams sp = new ScanParams();sp.count(pageSize);//每次多少條 //可以設置模糊查詢 loop(map, key, jedis, "0", sp); } catch (Exception e) {logger_xt_err.error(e.getMessage());return null;}finally{// 返還到連接池if(jedis!=null)close(jedis); }return map;} public static Map<String, String> loop(Map<String, String> mapList, String key, Jedis jedis, String cursor,ScanParams sp) {try {ScanResult<Entry<String, String>> map = jedis.hscan(key, cursor, sp);cursor = map.getStringCursor();for (Entry<String, String> en : map.getResult()) {mapList.put(en.getKey(), en.getValue());}System.out.println("cursor:" + cursor);} catch (Exception e) {e.printStackTrace();return null;}if (!"0".equals(cursor)) {loop(mapList, key, jedis, cursor, sp);}return mapList;}

?

使用的jar包:jedis-2.9.0.jar,commons-pool2-2.4.2.jar

轉載于:https://www.cnblogs.com/yangyang2018/p/10275671.html

總結

以上是生活随笔為你收集整理的redis 用scan 代替keys,hgetAll的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91久久在线观看 | 美女精品久久 | 色欲亚洲Av无码精品天堂 | 91亚洲国产成人精品性色 | 国产日本一区二区 | 天天操天天艹 | 日日摸夜夜 | 影音先锋丝袜制服 | 天天插天天摸 | 激情亚洲色图 | 国产欧美久久久 | 人妻熟女一区二区aⅴ水野 91在线观看视频 | 亚洲人精品午夜射精日韩 | 麻豆影视网站 | 婷婷的五月天 | 91精品国产综合久久久久久 | 国产成人在线免费观看 | 青青国产精品 | 特大黑人巨交性xxxx | 解开人妻的裙子猛烈进入 | 国产又粗又猛又黄又爽视频 | 99久久精品一区二区三区 | 成年人av在线 | 7777在线视频 | 95视频在线 | 亚洲精品乱码久久久久久蜜桃91 | 久久久久久伊人 | jizz日本在线观看 | 性——交——性——乱免费的 | 九九久久网 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 亚洲国产成人精品女人 | 天堂在线 | 国产精品久久久久9999 | 五月天婷婷丁香花 | 新久草视频 | 天堂999| 91高清在线免费观看 | 国产精品国产三级国产在线观看 | 国产一区二区激情 | 操一操视频 | 91看片黄| 精品一区二区三区四区五区六区 | 国产黄片一区二区三区 | 日韩精品网址 | av午夜天堂 | 超碰中文字幕 | 日本老师巨大bbw丰满 | 琪琪午夜伦理影院7777 | avwww. | 国产成人一区二区三区 | 亚欧精品在线 | 久久久国产成人 | 看特级黄色片 | 欧美黄色a视频 | 久久久久在线 | 97精品人妻一区二区三区蜜桃 | 就爱av | av三级| 日本精品久久久久 | 99热青青草 | 老女人人体欣赏a√s | 国产一区二区激情视频 | 男女污污软件 | 天天艹日日艹 | 日本色中色 | 欧美亚洲成人网 | japanese中文字幕| 成人福利网址 | 国产又粗又深又猛又爽又在线观看 | 国产视频精品一区二区三区 | 国产激情在线看 | 色香av| 亚洲精品福利在线 | 天天尻逼 | 欧美亚洲自拍偷拍 | 性感美女一区二区三区 | 午夜激情在线观看 | 日韩高清影视在线观看 | 日本热久久 | 精品成人av一区二区三区 | 少妇视频在线 | 日韩精品 欧美 | 亚洲精品一区二区三区新线路 | 午夜精品久久久久久久四虎美女版 | 精品一区二区在线免费观看 | 亚洲一区二区三区四区不卡 | av中文字幕第一页 | 欧美老肥妇做爰bbww | 天堂在线 | 色久阁 | 欧美人与野| 国产一卡在线 | 91红桃视频 | 丰满人妻一区二区三区免费视频 | 国产成人自拍网 | 成人av入口 | 日韩av手机在线免费观看 | 欧美性生交大片免费看 |