రెడిస్ ZSCAN

Redis Zscan



క్రమబద్ధీకరించబడిన సెట్‌లోని సభ్యులపై పునరావృతం చేయండి

మీ అందరికీ తెలిసినట్లుగా, రెడిస్ క్రమబద్ధీకరించబడిన సెట్‌లు సాధారణ సెట్‌ల నుండి తీసుకోబడ్డాయి, ఇక్కడ ప్రతి సభ్యుడు ఆరోహణ క్రమంలో దాని స్కోర్ విలువను బట్టి ఆర్డర్ చేస్తారు. ఇద్దరు లేదా అంతకంటే ఎక్కువ మంది సభ్యులు ఒకే స్కోర్ విలువను కలిగి ఉంటే, వారు లెక్సికోగ్రాఫికల్ ఆర్డర్ ద్వారా ఆర్డర్ చేయబడతారు. సాధారణంగా, ZRANGE ఆదేశాన్ని ఉపయోగించి సభ్యులు మరియు స్కోర్‌లను నేరుగా తిరిగి పొందవచ్చు. మీరు వేలాది మంది సభ్యులతో పెద్దగా క్రమబద్ధీకరించబడిన సెట్‌ను కలిగి ఉన్నప్పుడు, ZRANGE కమాండ్ SMEMBERS మరియు KEYS కమాండ్‌ల వంటి చాలా కాలం పాటు సర్వర్‌ను బ్లాక్ చేయవచ్చు, ఇది ఒక లోపం. కాబట్టి, Redis ZSCAN అనే ప్రత్యేక కమాండ్‌ను అందిస్తుంది, ఇది క్రమబద్ధీకరించబడిన సెట్‌లోని సభ్యులపై మళ్ళించడానికి SCAN కమాండ్ నుండి తీసుకోబడింది. ZSCAN కమాండ్ SCAN కమాండ్ నుండి వారసత్వంగా పొందుతుంది కాబట్టి, దాదాపు అన్ని ప్రవర్తనలు సాధారణ ప్రయోజన SCAN ఆదేశం వలె ఉంటాయి.







ఇచ్చిన చిత్రంలో వలె, SCAN కమాండ్ కర్సర్-ఆధారిత ఇటరేటర్. అందువల్ల, Redis సేకరణలోని అన్ని అంశాలను అందించడానికి ఒకటి లేదా అంతకంటే ఎక్కువ పునరావృత్తులు అవసరం. ZSCAN కమాండ్ మాతృ SCAN కమాండ్ నుండి వారసత్వంగా పొందుతుంది కాబట్టి, ప్రవర్తన ఒకే విధంగా ఉంటుంది. ఈ గైడ్‌లో, ZSCAN కమాండ్ యొక్క సింటాక్స్ మరియు వినియోగ సందర్భాలు వివరంగా చర్చించబడతాయి.



ZSCAN కమాండ్

ZSCAN కమాండ్ అనేది కర్సర్-ఆధారిత ఇటరేటర్, ఇది 0వ కర్సర్‌తో పునరుక్తిని ప్రారంభిస్తుంది. తరువాత, ప్రతి పునరావృతంలో, ఇది క్రింది కమాండ్ కాల్ కోసం కర్సర్‌గా ఉపయోగించబడే తదుపరి కర్సర్‌తో పాటుగా సున్నా లేదా అంతకంటే ఎక్కువ క్రమబద్ధీకరించబడిన సెట్ సభ్యులను అందిస్తుంది. ఒకటి లేదా అంతకంటే ఎక్కువ పునరావృతాల తర్వాత తిరిగి వచ్చిన కర్సర్ 0 అయితే, స్కానింగ్ ప్రక్రియ ముగిసిందని అర్థం. క్రమబద్ధీకరించబడిన సెట్ సభ్యులందరూ ఈ సమయంలో తిరిగి ఇవ్వబడతారు. ఈ ప్రక్రియను పూర్తి పునరావృతం అంటారు. మీరు చూడగలిగినట్లుగా, ZSCAN ఆదేశం దాని స్థితిని కర్సర్‌ని ఉపయోగించి మాత్రమే ఉంచుతుంది, ఇది పరిమిత రాష్ట్ర అవగాహనకు దారితీస్తుంది. కాబట్టి, క్రింది లోపాలు ZSCAN ఆదేశంతో అనుబంధించబడ్డాయి.



  • ఒకే మూలకం బహుళ పునరావృతాలలో తిరిగి రావచ్చు.
  • స్కానింగ్ ప్రక్రియ ప్రారంభంలో సభ్యుడు లేకుంటే, పూర్తి పునరావృతం సమయంలో ఆ సభ్యుడిని తిరిగి ఇవ్వకుండా ఉండే అవకాశం ఉంది.

అదనంగా, తిరిగి వచ్చిన సభ్యుల సంఖ్యపై ఎటువంటి హామీ లేదు. కొన్ని సందర్భాల్లో, క్రమబద్ధీకరించబడిన సెట్ చాలా చిన్నదిగా ఉంటే, సభ్యులందరూ మొదటి పునరావృతంలోనే తిరిగి ఇవ్వబడవచ్చు. ఎందుకంటే గరిష్ట ఐటెమ్ కౌంట్ వచ్చే వరకు సభ్యులను ఉంచడానికి Redis ప్రత్యేక సింగిల్ కేటాయింపు ప్యాక్డ్ ఎన్‌కోడింగ్ ఆకృతిని ఉపయోగిస్తుంది. ZSCAN కమాండ్ స్కాన్ చేయబడిన డేటా స్ట్రక్చర్‌ను హాష్ టేబుల్‌గా సూచించినట్లయితే మాత్రమే కర్సర్‌ను తిరిగి ఇవ్వగలదు.





సింటాక్స్:
ZSCAN కమాండ్ SCAN కమాండ్ వలె దాదాపు అదే సింటాక్స్‌ను ఉపయోగిస్తుంది తప్ప అది క్రమబద్ధీకరించబడిన సెట్ కీని మొదటి ఆర్గ్యుమెంట్‌గా అంగీకరిస్తుంది. అనుమతించబడిన ఆర్గ్యుమెంట్‌లతో కూడిన కమాండ్ సింటాక్స్ క్రింది విధంగా ఉంటుంది:

ZSCAN క్రమబద్ధీకరించబడిన_సెట్_కీ కర్సర్ [ మ్యాచ్ నమూనా ] [ COUNT సభ్యుల_గణన ]

క్రమబద్ధీకరించబడిన_సెట్_కీ : క్రమబద్ధీకరించబడిన సెట్ యొక్క కీ.
కర్సర్ : కర్సర్ విలువ 0 నుండి ప్రారంభమవుతుంది మరియు అది పూర్తి పునరావృతమైతే 0తో ముగుస్తుంది.



కింది వాదనలు ఐచ్ఛికం:

మ్యాచ్ : ప్రతి పునరావృతంలోని మూలకాలను తిరిగి పొందేటప్పుడు సరిపోలే నమూనా. సరిపోలిన సభ్యులు మాత్రమే తిరిగి ఇవ్వబడతారు.
COUNT : ప్రతి పునరుక్తిలో వాపసు చేయవలసిన సభ్యుల సంఖ్య.

ప్రతి పునరావృత ఫలితం సెట్‌లో కొన్ని అంశాలు ఉన్నాయి. మొదటి భాగం 64-బిట్ సంతకం చేయని పూర్ణాంకం, ఇది తదుపరి కాల్‌కి పంపబడే కర్సర్‌ను సూచిస్తుంది. తదుపరి భాగం సభ్యులు మరియు అనుబంధిత స్కోర్‌ల శ్రేణి.

కేస్ 1ని ఉపయోగించండి - ఆన్‌లైన్ గేమ్ యొక్క సభ్యులందరినీ మరియు వారి పూర్తి చేసిన మిషన్‌లను తిరిగి పొందండి

ఒక ఆన్‌లైన్ గేమ్ కంపెనీ Redis క్రమబద్ధీకరించబడిన సెట్‌ని ఉపయోగించి లీడర్‌బోర్డ్‌ను నిర్వహిస్తుందని అనుకుందాం. భారీ వినియోగదారులు గేమ్‌ను చురుకుగా ఆడుతున్నారు కాబట్టి, ప్రతి ప్లేయర్‌ని మరియు వారి అనుబంధిత స్కోర్‌ని తిరిగి పొందేందుకు వారికి ఒక మార్గం అవసరం, ఇది పూర్తయిన మిషన్‌ల సంఖ్య. సర్వర్‌ను నిరోధించకుండా తిరిగి పొందడం తప్పనిసరి. కాబట్టి, ZSCAN ఆదేశాన్ని ఈ క్రింది విధంగా ఉపయోగించాలని సిఫార్సు చేయబడింది:

ముందుగా, మేము కొంతమంది ఆటగాళ్లతో మరియు పూర్తి చేసిన మిషన్ల సంఖ్యతో క్రమబద్ధీకరించబడిన సెట్‌ను సృష్టిస్తాము.

zadd లీడర్‌బోర్డ్ 12 ప్లేయర్ 6: జాన్ 4 ప్లేయర్2:మేరీ 22 ప్లేయర్1:పటేల్ పదిహేను ఆటగాడు: పదకొండు 23 ప్లేయర్ 5:అన్ 30 ఆటగాడు 7:కఠినమైన 23 ప్లేయర్12:ఏబీ రెండు ప్లేయర్ 13: నిక్కీ 6 ప్లేయర్ 9: జెరెమీ 7 ప్లేయర్ 45:కినా

ఇప్పుడు, క్రమబద్ధీకరించబడిన సెట్‌లోని సభ్యులపై మనం ఈ క్రింది విధంగా పునరావృతం చేయవచ్చు:

zscan లీడర్‌బోర్డ్ 0

అవుట్‌పుట్:

రిటర్న్ చేసిన రిజల్ట్ సెట్‌లో కర్సర్ విలువ 0 అంటే మొదటి పునరావృతం ముగింపులో సభ్యులందరూ తిరిగి ఇవ్వబడతారు. ఈ సందర్భంలో, సభ్యుల సంఖ్య తక్కువగా ఉన్నందున, ఒకే-కేటాయింపు ప్యాక్ చేసిన ఎన్‌కోడింగ్‌ని ఉపయోగించి Redis ఈ సభ్యులను సూచిస్తుంది. అందువల్ల, గరిష్ట ప్యాక్ పరిమాణం లేదా సభ్యుల సంఖ్య చేరుకునే వరకు, ఆదేశం క్రమబద్ధీకరించబడిన సెట్‌లోని సభ్యులందరినీ తిరిగి అందిస్తుంది. దీనిని పూర్తి పునరావృతం అంటారు. ఎందుకంటే మొదటి పునరావృతం ముగింపులో, మేము మొత్తం పది మంది సభ్యులను మరియు వారి స్కోర్‌లను అందుకుంటాము. మనకు వందలాది మంది సభ్యులు ఉంటే, అది మెమరీలో హాష్ పట్టికగా సూచించబడుతుంది. కాబట్టి, సభ్యులందరినీ తిరిగి ఇవ్వడానికి అనేక పునరావృత్తులు అవసరం.

పునరావృతంలో తిరిగి వచ్చిన సభ్యుల సంఖ్యను పరిమితం చేయడానికి COUNT పరామితిని ఉపయోగించవచ్చు. డిఫాల్ట్‌గా, ఈ ఆర్గ్యుమెంట్ 10కి సెట్ చేయబడింది. క్రమబద్ధీకరించబడిన సెట్‌లో వందలాది మంది సభ్యులు ఉంటే, అది మెమరీలో హాష్ టేబుల్ ద్వారా సూచించబడుతుంది. కాబట్టి, తిరిగి వచ్చిన సభ్యుల సంఖ్య ప్రతి పునరావృతానికి దాదాపు పది మంది. క్రమబద్ధీకరించబడిన సెట్ చాలా చిన్నదిగా ఉంటే COUNT ఆర్గ్యుమెంట్ విలువ విస్మరించబడుతుంది.

కేస్ 2 ఉపయోగించండి - 'J' అక్షరంతో ప్రారంభమయ్యే పేరు గల ఆటగాళ్లను పొందండి

నమూనా సరిపోలిక ఆధారంగా తిరిగి వచ్చిన సభ్యులను ఫిల్టర్ చేయడానికి ZSCAN ఆదేశం ఉపయోగించబడుతుంది. అలాంటప్పుడు, MATCH వాదనను పేర్కొనాలి.

మునుపటి వినియోగ కేసు నుండి అదే ఉదాహరణను ఉపయోగిస్తాము. 'J' అనే అక్షరంతో ప్రారంభమయ్యే ఆటగాళ్లను పొందడం అవసరం. ఇది గేమ్‌కు సంబంధించిన తదుపరి కూల్ ఫీచర్‌ని అమలు చేయడానికి మాత్రమే. MATCH వాదనను ఈ క్రింది విధంగా పేర్కొనవచ్చు:

zscan లీడర్‌బోర్డ్ 0 మ్యాచ్ * జె *

ఇది జెరెమీ మరియు జాన్ అనే ఇద్దరు సభ్యులను ఆదర్శంగా అందించాలి.

ముగింపు

సారాంశంలో, Redis క్రమబద్ధీకరించబడిన సెట్‌లోని సభ్యులు మరియు స్కోర్‌లపై పునరావృతం చేయడానికి ZSCAN ఆదేశం ఉపయోగించబడుతుంది. ఈ ఆదేశం SCAN కమాండ్ వలె ప్రవర్తిస్తుంది, ZSCAN కమాండ్ సెట్ కీని మొదటి ఆర్గ్యుమెంట్‌గా అంగీకరిస్తుంది. వినియోగ సందర్భాలలో చర్చించినట్లుగా, MATCH మరియు COUNT ఆర్గ్యుమెంట్‌లను పేర్కొనడం ద్వారా ZSCAN కమాండ్‌ను వివిధ మార్గాల్లో ఉపయోగించవచ్చు, ఇక్కడ మీరు నిర్దిష్ట నమూనాకు సరిపోలే సభ్యులు మరియు అనుబంధిత స్కోర్‌లను తిరిగి పొందవచ్చు మరియు ప్రతి పునరావృతానికి తిరిగి వచ్చిన సభ్యుల సంఖ్యను పరిమితం చేయవచ్చు. మొత్తంమీద, సర్వర్ లేదా క్లయింట్‌ను నిరోధించకుండా క్రమబద్ధీకరించబడిన సెట్‌లోని సభ్యులను తిరిగి పొందేటప్పుడు ZSCAN ఆదేశం ఉపయోగకరంగా ఉంటుంది.