久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

redis的scan語(yǔ)法及作用對(duì)象

共計(jì) 3134 個(gè)字符,預(yù)計(jì)需要花費(fèi) 8 分鐘才能閱讀完成。

這篇文章主要講解了“redis 的 scan 語(yǔ)法及作用對(duì)象”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著丸趣 TV 小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“redis 的 scan 語(yǔ)法及作用對(duì)象”吧!

redis 的 scan 操作序

在 redis 的 db 存在大量 key 或者 db 里頭的某個(gè) set、zset、hash 里頭的元素非常多的話,用普通的 get all 操作很可能導(dǎo)致 redis 因?yàn)檫@個(gè)操作阻塞了,導(dǎo)致不能響應(yīng)其他操作,特別是在高并發(fā)、海量數(shù)據(jù)的背景下,這個(gè)問(wèn)題顯得尤其嚴(yán)重。那么能不能像數(shù)據(jù)庫(kù)那樣有個(gè)分頁(yè)的功能呢,答案就是 scan 操作。本文主要展示怎么在 redis-cli 以及 SpringDataRedis 中的使用。【推薦:redis 視頻教程】

scan 語(yǔ)法

scan 之后返回兩部分,第一部分是下次 scan 的參數(shù),第二部分就是 scan 出來(lái)的項(xiàng)

作用對(duì)象 (db、set、zset、hash)

db(key)

127.0.0.1:6379  scan 0
1)  120 
2) 1)  articleMap:63 
 2)  articleMap:37 
 3)  counter:__rand_int__ 
 4)  articleMap:60 
 5)  tagSet:tag5 
 6)  articleMap:80 
 7)  messageCache~keys 
 8)  mymap 
 9)  articleMap:46 
 10)  articleMap:55 
127.0.0.1:6379  scan 120
1)  28 
2) 1)  articleMap:17 
 2)  tagSet:tag1 
 3)  articleMap:18 
 4)  articleMap:81 
 5)  \xac\xed\x00\x05t\x00\btest-cas 
 6)  articleMap:51 
 7)  articleMap:94 
 8)  articleMap:26 
 9)  articleMap:71 
 10)  user-abcde

set(value)

127.0.0.1:6379  sscan myset 0
1)  3 
2) 1)  m 
 2)  j 
 3)  c 
 4)  h 
 5)  f 
 6)  i 
 7)  a 
 8)  g 
 9)  n 
 10)  e 
 11)  b 
127.0.0.1:6379  sscan myset 3
1)  0 
2) 1)  l 
 2)  k 
 3)  d

zset(value score)

127.0.0.1:6379  zscan sortset 0
1)  0 
2) 1)  tom 
 2)  89 
 3)  jim 
 4)  90 
 5)  david 
 6)  100

hash(key value)

127.0.0.1:6379  hscan mymap 0
1)  0 
2) 1)  name 
 2)  codecraft 
 3)  email 
 4)  pt@g.cn 
 5)  age 
 6)  20 
 7)  desc 
 8)  hello 
 9)  sex 
 10)  male

SCAN 的額外參數(shù)

count(指定每次取多少條)

127.0.0.1:6379  scan 0 count 5
1)  240 
2) 1)  articleMap:63 
 2)  articleMap:37 
 3)  counter:__rand_int__ 
 4)  articleMap:60 
 5)  tagSet:tag5

match(匹配 key)

127.0.0.1:6379  scan 0 match article*
1)  120 
2) 1)  articleMap:63 
 2)  articleMap:37 
 3)  articleMap:60 
 4)  articleMap:80 
 5)  articleMap:46 
 6)  articleMap:55

RedisTemplate 操作遍歷數(shù)據(jù)庫(kù) key

@Test
 public void scanDbKeys(){ template.execute(new RedisCallback Iterable byte[] () {
 @Override
 public Iterable byte[]  doInRedis(RedisConnection connection) throws DataAccessException { List byte[]  binaryKeys = new ArrayList byte[] 
 Cursor byte[]  cursor = connection.scan(ScanOptions.scanOptions().count(5).build());
 while (cursor.hasNext()) { byte[] key = cursor.next();
 binaryKeys.add(key);
 System.out.println(new String(key, StandardCharsets.UTF_8));
 }
 try { cursor.close();
 } catch (IOException e) {
 // do something meaningful
 }
 return binaryKeys;
 }
 });
 }

遍歷 set

/**
 * sadd myset a b c d e f g h i j k l m n
 */
 @Test
 public void scanSet(){ Cursor String  cursor = template.opsForSet().scan(myset ,ScanOptions.NONE);
 while (cursor.hasNext()){ System.out.println(cursor.next());
 }
 }

遍歷 zset

/**
 * zadd sortset 89 tom 90 jim 100 david
 */
 @Test
 public void scanZSet(){ Cursor ZSetOperations.TypedTuple String  cursor = template.opsForZSet().scan(sortset ,ScanOptions.NONE);
 while (cursor.hasNext()){ ZSetOperations.TypedTuple String  item = cursor.next();
 System.out.println(item.getValue() +  :  + item.getScore());
 }
 }

遍歷 hash

/**
 * hset mymap name  codecraft 
 * hset mymap email  pt@g.cn 
 * hset mymap age 20
 * hset mymap desc  hello 
 * hset mymap sex  male 
 */
 @Test
 public void scanHash(){ Cursor Map.Entry Object, Object  curosr = template.opsForHash().scan(mymap , ScanOptions.NONE);
 while(curosr.hasNext()){ Map.Entry Object, Object  entry = curosr.next();
 System.out.println(entry.getKey()+ : +entry.getValue());
 }
 }

感謝各位的閱讀,以上就是“redis 的 scan 語(yǔ)法及作用對(duì)象”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì) redis 的 scan 語(yǔ)法及作用對(duì)象這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-28發(fā)表,共計(jì)3134字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 女性| 鹤岗市| 山东| 新昌县| 彝良县| 锦州市| 临高县| 田阳县| 济阳县| 瑞昌市| 商都县| 普兰县| 惠州市| 闽侯县| 尚义县| 密云县| 嘉祥县| 东乌| 辽中县| 旅游| 华亭县| 汤原县| 磐安县| 项城市| 罗田县| 康乐县| 玛沁县| 高邑县| 宝清县| 锦州市| 汉中市| 房山区| 石渠县| 米脂县| 吉隆县| 漯河市| 定兴县| 色达县| 虎林市| 十堰市| 辽源市|