Redis Stream - reliability et scalability tuae messaging systemata

Redis Stream - reliability et scalability tuae messaging systemata

Redis Fluvius est nova notitia abstracta genus introductum in Redis cum versione 5.0
Ratione, Redis Fluvius est index cui addere potes entries. Quisque ingressum unicum identifier habet. Defalta, ID automatice generatur et indicationem includit. Propterea interrogationes monumentorum per tempus dare potes, vel novas notitias cum in rivo accipias, multum simile Unix "caudae -f" mandatum lima stipes legit et dum novas notitias constringitur dum exspectat. Nota quod plures clientes filo simul audire possunt, sicut multi processus "caudae-f" simul limam sine repugnantia inter se legere possunt.

Ut omnia beneficia novi generis notitiae intelligas, velox inspiciamus ad structuras Redis diu existentes quae partim replicant ad officiationem Redis Fluminis.

Redis PUB / SUB

Redis Pub/Sub est simplex nuntius rationi iam constructa in clavibus valoris. Sed simplicitas fit gratuita;

  • Si editor aliqua de causa deficit, omnes subscriptores amittit
  • Editor debet cognoscere accuratam inscriptionem omnium subscriptorum eius
  • A editore Signatores suo labore onerare potest si celerius divulgetur notitia quam discursum est
  • Nuncium a quiddam editoris statim post publicationem deletum est, quantumcumque tot subscribentium ei traditum est et quam celerrime hunc nuntium procedere poterant.
  • Signatores omnes nuntium simul accipient. Signatores ipsi aliquo modo inter se consentire debent in ordine processus eiusdem nuntii.
  • Nulla in mechanism aedificata est ad confirmandum quod subscribens nuntium feliciter processit. Si subscribens nuntium acceperit et in dispensando inruerit, editor de illo nesciet.

Redis List

Redis Index notitiarum structuram sustinet quae mandata legunt interclusionem. Epistulas ab initio vel fine indicem addere potes et legere. Ex hac structura, bene acervum vel queue pro distributo systemate facere potes, et in pluribus satis erit. Differentiae principales ab Redis Pub/Sub:

  • Haec nuntius uni clienti traditur. Prima clientis lege-obstructa notitia prima accipiet.
  • Clinte operationem legere debet pro unoquoque nuntio ipso. Album nihil scit de clientibus.
  • Mandata reponuntur donec aliquis eas legerit vel eas expresse deleat. Si Redis server notitia ad orbem ruborem configurare, tunc fides systematis dramatically augetur.

Introductio ad Stream

Addit ingressum ad rivum

bigas XADD addit novum introitum ad rivum. Recordum filo tantum non est, uno vel plurium pretiis clavibus constat. Sic uterque introitus iam est exstructus et similis structurae fasciculi CSV.

> XADD mystream * sensor-id 1234 temperature 19.8
1518951480106-0

In exemplo superiore addimus duos campos rivo nomine (clavis) "mystream": "sensor-id" et "temperatus" cum valoribus "1234" et "19.8" respective. Ut secunda ratio, praeceptum identificantem accipit, quod in introitu assignatum erit - haec identificatrix singulariter identificat unumquemque ingressum in rivo. Sed in hoc casu transivimus * quia Redis novum ID nobis generare volumus. Quisque id novum augebit. Quaelibet igitur novus introitus altiorem identificantem habebit in ordine ad introitus priores.

Identifier forma

Ingressus ID rediit per mandatum XADDduabus ex partibus constat;

{millisecondsTime}-{sequenceNumber}

millisecondsTime β€” Unix tempus in milliseconds (Redis server time). Attamen, si praesens tempus idem est vel minus quam tempus memoriae prioris, tunc temporis notae recordatio prioris adhibetur. Ideo, si tempus servo in tempore revertitur, novus identificador adhuc proprietatem incrementi retinebit.

sequenceNumber usus monumentorum in eodem millisecondo creati. sequenceNumber augebitur per 1 ad priorem ingressum. Quod sequenceNumber est 64 bits in magnitudine, tum in usu non debes currere in numero monumentorum qui intra unum millisecondum generari possunt.

Forma talium identificantium prima specie mirum videri potest. Diffidens lector miretur quare tempus sit pars identifier. Ratio est, quia Redis rivi per ID interrogationes eminus sustinent. Cum identifier ad tempus creatum recordum coniungitur, hoc efficit ut tempus interrogationis possi- deat. Certum exemplum spectabimus cum praeceptum spectamus XRANGE.

Si usor ob aliquam causam suum identificatorium specificare debet, quae, exempli gratia, cum aliqua externa ratione coniungitur, tunc ad imperium transire possumus. XADD pro * ut infra:

> XADD somestream 0-1 field value
0-1
> XADD somestream 0-2 foo bar
0-2

Nota quaeso te in hoc casu monitorem ID incrementi te esse oportet. In nostro exemplo, minimum identificantis "0-1" est, ideo mandatum aliud identificantem non accipiet, quod aequale vel minus quam "0-1" est.

> XADD somestream 0-1 foo bar
(error) ERR The ID specified in XADD is equal or smaller than the target stream top item

Numerus monumentorum per stream

Fieri potest ut numerus monumentorum in rivo simpliciter utendo praecepto XLEN. Ad exemplum nostrum hoc mandatum sequens valorem reddet.

> XLEN somestream
(integer) 2

Range queries - XRANGE et XREVRANGE

Ut notitias per amplitudinem petat, opus est ut duos identificatores designet - principium et finem extensionis. Ordinatio reditus omnia elementa comprehendet, limites inclusis. Sunt etiam duo speciales identificatores "-" et "+", respective minimum significant (primum recordum) et maximum (ultimum recordum) identifier in flumine. Exemplum infra enumerabit omnes entries in torrente.

> XRANGE mystream - +
1) 1) 1518951480106-0
   2) 1) "sensor-id"
      2) "1234"
      3) "temperature"
      4) "19.8"
2) 1) 1518951482479-0
   2) 1) "sensor-id"
      2) "9999"
      3) "temperature"
      4) "18.2"

Uniuscuiusque rei redditus est ordo duarum elementorum: identificatrix et index clavium valoris duo. Iam diximus identificatores recordum ad tempus referri. Ergo tempus certum postulare potest amplis. Verumtamen definire possumus in petitione non plenam identificantis, sed solum tempus Unix, omissis partibus relatis. sequenceNumber. Omissa pars identificantis automatice ad nihilum ponetur in initio extensionis et ad valorem maximum in fine extensionis. Infra exemplum est quomodo duorum millium secundorum amplitudinem postulare potes.

> XRANGE mystream 1518951480106 1518951480107
1) 1) 1518951480106-0
   2) 1) "sensor-id"
      2) "1234"
      3) "temperature"
      4) "19.8"

Tantum unum ingressum in hoc ambitu habemus, tamen in notitia reali ponit effectus redditus ingens esse potest. Propter hoc XRANGE sustinet comitia optio. Quantitas specificando, primum N tabulas simpliciter accipere possumus. Si opus est ut tabulas proximas N (pagination), uti possumus proximis ID receptis, augere sequenceNumber ab uno repete. Intueamur hoc in exemplo sequenti. Nos satus addere X elementa cum XADD (si mystream iam X elementis refertam). Iterationem inire ut elementa per imperium inire, incipimus cum integra sed cum 10 COMMENTO aequalis.

> XRANGE mystream - + COUNT 2
1) 1) 1519073278252-0
   2) 1) "foo"
      2) "value_1"
2) 1) 1519073279157-0
   2) 1) "foo"
      2) "value_2"

Ut pergamus cum duobus proximis elementis iterando, necesse est eligere id ultimum receptum, i.e. 1519073279157-0, et 1 addere ad sequenceNumber.
ID consequens, in hoc casu 1519073279157-1, nunc adhiberi potest ut novum initium vagandi argumenti ad proximam vocationem. XRANGE:

> XRANGE mystream 1519073279157-1 + COUNT 2
1) 1) 1519073280281-0
   2) 1) "foo"
      2) "value_3"
2) 1) 1519073281432-0
   2) 1) "foo"
      2) "value_4"

Et sic porro. Quia multiplicitate XRANGE est O(log(N)) quaerere et deinde O(M) redire M elementa, tum singulae iterationis gradus celer est. Sic utens XRANGE rivi efficaciter iterari possunt.

bigas XREVRANGE est equivalent XRANGEelementa autem ordine retrogrado reddit;

> XREVRANGE mystream + - COUNT 1
1) 1) 1519073287312-0
   2) 1) "foo"
      2) "value_10"

Lorem quod mandatum XREVRANGE sumit vagantes rationes incipiunt et desinunt in ordine retrogrado.

Legere novum entries per XREAD

Saepe negotium oritur ad rivum subscribendum et solum novas epistulas accipiendas. Haec notio similis videri potest cum Redis Pub/Sub vel Redis List obturans, sed differentiae fundamentales sunt quomodo utatur Flumine Redis:

  1. Unicuique nuntium novum per defaltam subscribens traditur. Haec agendi ratio differt ab indice Redis interclusio, ubi novus nuntius tantum ab uno subscribente legetur.
  2. Dum in Redis Pub/Sub omnibus nuntiis oblivione sunt et numquam perstiterunt, in Stream omnes nuntii indefinite servantur (nisi cliens expresse deletionem facit).
  3. Fluvius Redis permittit tibi aditum ad differentiam epistularum intra unum rivum. Signator specificus solum videre potest eorum historiam nuntium personalem.

Subscribere filo potes et novas epistulas accipere imperium utens XREAD. Est paulo magis complicated quam XRANGEita simplicioribus exemplis prius incipiemus.

> XREAD COUNT 2 STREAMS mystream 0
1) 1) "mystream"
   2) 1) 1) 1519073278252-0
         2) 1) "foo"
            2) "value_1"
      2) 1) 1519073279157-0
         2) 1) "foo"
            2) "value_2"

Exemplum supra ostendit formam non interclusio XREAD. Nota quod optio comitis libitum est. Re quidem vera, optio sola imperandi requiritur optio rivi, quae album rivorum specificat cum maximo identificante respondente. Scripsimus "Freum mystream 0" - omnia monumenta mysterii amnis recipere volumus cum identificatorio maiore quam "0-0". Ut videre potes ex exemplo, redit mandatum sequelae nomen, quia simul pluribus stamina subscribi possumus. Scribere potuimus, exempli gratia, "0 0 rivi mystream". Quaeso note quod post optionis STREMA nomina omnium fluminum requisitorum primum praebere debemus et tunc demum indicem identificantium.

In hac forma simplex mandatum non facit aliquid speciale comparatum XRANGE. Attamen res iucunda est ut facile nos convertamus XREAD ad interclusio imperii speciem obstruet argumentum;

> XREAD BLOCK 0 STREAMS mystream $

In specimine supra, optio OBSIDEO nova cum temporis 0 milliseconds (hoc significat infinitum exspectans) specificatur. Porro, pro transeundo identificante usitati pro rivulo mystream, peculiari identificante $ lata est. Hoc speciale identifier significat quod XREAD maximum identifier in mystream sicut identifier uti debet. Ita epistulas novas tantum accipiemus ex quo incepimus audire. Nonnullis modis hoc mandatum Unix simile "caudae -f" est.

Nota nos, cum optione Block utentes, speciali identificante $ speciali uti non necesse est. Qualibet identifier in rivulo exsistente uti possumus. Si turma nostra postulationi nostrae servire potest statim sine interclusione, hoc faciet, alioquin obstabit.

Clausus XREAD audire etiam possunt plures fila simul, nomina eorum nominare solum opus est. In hoc casu, mandatum reddet indicem primi rivi qui data accepit. Primus subscribens clausus pro filo dato primum notitias accipiet.

Dolor Groups

In quibusdam muneribus, nuntiis accessum subscribens limitare volumus intra unum filum. Exemplum, ubi hoc utile esse potest, nuntius queue cum operariis qui varias epistulas a filo recipiet, nuntium permittit ut conscendat.

Si imaginamur nos tres signatores C1, C2, C3 et linum in quo epistulas 1, 2, 3, 4, 5, 6, 7, continet, tunc epistulae in schemate infra ministrabuntur;

1 -> C1
2 -> C2
3 -> C3
4 -> C1
5 -> C2
6 -> C3
7 -> C1

Ad hunc effectum assequendum, Redis Stream utitur conceptu nomine Consumer Group. Haec notio similis est pseudo-subscriptori, qui ex rivo notitias accipit, sed etiam pluribus signatoribus intra coetum ministratur, quaedam cautiones praebens;

  1. Quisque nuntius alio subscribens intra coetum traditus est.
  2. In circulo, signatores nomine notantur, quod est chorda sensitiva. Si subscribens ad tempus e medio excidit, restitui potest coetui proprio nomine proprio utente.
  3. Omnis Consumer Group sequitur conceptum "primum nuntium illectum". Cum subscribens novas epistulas petit, tantum epistulas recipere potest quae numquam alicui in coetum subscribentium traditae sunt.
  4. Mandatum est ut explicite confirmet nuntium subscriptorem feliciter processit. Donec hoc mandatum appellatur, nuntius rogatus in statu "pendente" manebit.
  5. Intra Consumer Group, quisque subscribens epistularum quae ei traditae sunt petere possunt historiam, sed nondum discursum (in statu "pendente".

Quodammodo, status globi exprimi potest hoc modo;

+----------------------------------------+
| consumer_group_name: mygroup          
| consumer_group_stream: somekey        
| last_delivered_id: 1292309234234-92    
|                                                           
| consumers:                                          
|    "consumer-1" with pending messages  
|       1292309234234-4                          
|       1292309234232-8                          
|    "consumer-42" with pending messages 
|       ... (and so forth)                             
+----------------------------------------+

Tempus est iam nosse praecepta principalia Consumer Societas, scilicet:

  • XGROUP ad creare, perdere et administrare coetibus
  • XREADGROUP legitur amnis per group
  • XACK - Hoc mandatum permittit subscribens nuntium notare quam feliciter processit

Creatio Consumer Group

Demus mystream iam existere. Tunc universitas creaturarum mandatum tuum tamquam simile;

> XGROUP CREATE mystream mygroup $
OK

Cum coetus creando, identifier facere debemus, ex quo coetus nuntios accipiet. Si modo omnes epistulas novas accipere vis, tum speciali identificatorio $ (ut in exemplo nostro supra). Si pro speciali identificantis 0 specificas, tunc omnes epistulae in sequela praesto sodalitati erunt.

Cum coetus creetur, statim incipere possumus epistulas legere mandato utentes XREADGROUP. Hoc mandatum est simillimum XREAD oppositum optionis libitum sustinet. Attamen optio GROUP requiritur, quae duobus argumentis semper definiri debet: nomen coetus et nomen subscribens. Optionem etiam Comes adiuvatur.

Priusquam filum legamus, aliquas epistulas ibi induamus;

> XADD mystream * message apple
1526569495631-0
> XADD mystream * message orange
1526569498055-0
> XADD mystream * message strawberry
1526569506935-0
> XADD mystream * message apricot
1526569535168-0
> XADD mystream * message banana
1526569544280-0

Nunc experiamur hunc rivum per coetum legere:

> XREADGROUP GROUP mygroup Alice COUNT 1 STREAMS mystream >
1) 1) "mystream"
   2) 1) 1) 1526569495631-0
         2) 1) "message"
            2) "apple"

Praescriptum mandatum legit ad verbum sic:

"Ego, subscribens Alicia, membrum coetus mysterii, unum nuntium ex mystream legere volo, qui numquam alicui ante traditus est."

Quoties subscribens operationem in circulo exercet, nomen suum praebere debet, singulariter se intra coetum identificat. Unum illud in superius mandatum - speciale identifier ">" specialius est in speciali. Haec epistulae columellae speciales identifier sunt, eas tantum relinquentes quae numquam antea traditae sunt.

Etiam in casibus specialibus potes specificare realem identificantem ut 0 vel quodlibet aliud validum identificatorem. In hoc casu mandatum XREADGROUP Historiam epistularum tibi reddet cum statu "pendentis" quae subsignatore definito traditae sunt sed nondum utens mandato agnitae sunt. XACK.

Hanc mores probare possumus statim ID 0 specificans, sine optione RATIO. Solum nuntium pendens unum, id est, nuntium pomum videbimus;

> XREADGROUP GROUP mygroup Alice STREAMS mystream 0
1) 1) "mystream"
   2) 1) 1) 1526569495631-0
         2) 1) "message"
            2) "apple"

Attamen si nuntium tam feliciter processit confirmamus, iam non ostendetur;

> XACK mystream mygroup 1526569495631-0
(integer) 1
> XREADGROUP GROUP mygroup Alice STREAMS mystream 0
1) 1) "mystream"
   2) (empty list or set)

Nunc Bob scriptor aliquid legere:

> XREADGROUP GROUP mygroup Bob COUNT 2 STREAMS mystream >
1) 1) "mystream"
   2) 1) 1) 1526569498055-0
         2) 1) "message"
            2) "orange"
      2) 1) 1526569506935-0
         2) 1) "message"
            2) "strawberry"

Bob, membrum mygroup, postulavit non plus quam duas epistulas. Mandatum solum refert undelivores nuntios ob identifier speciali identificanti ">". Ut vides, nuntius "malum" non proponendum cum iam Alicie traditum est, sic Bob "aureum" et "fragmentum" accipit.

Hoc modo, Alice, Bob, et quilibet alius globi subscribens diversas nuntios ex eodem rivo legere potest. Possunt etiam epistulas suas legere vel nuntia vel notare prout processit in historia sua.

Pauca sunt quae memoramus;

  • Cum primum nuntium subscribens considerat mandatum esse XREADGROUP, nuntius in statum "pendentis" accedit et illi proprio subscribenti assignatur. Alii coetus signatores hunc nuntium legere non poterunt.
  • Signatores sponte creati sunt in prima mentione, nihil opus est eos explicite creare.
  • cum XREADGROUP epistulas e pluribus filis diversis simul legere potes, tamen ad hoc laborandum debes primum circulos creare eodem nomine pro quolibet filo utendo XGROUP

Recuperatio post defectum

Signator ex defectu recuperare potest et suum album epistularum cum statu "pendente" iterum legit. Tamen, in rerum natura, signatores finaliter deficere possunt. Quid accidit nuntiis adhæsit subscribens si subscribens ex defectu recuperare nequit?
Consumer Group praebet pluma quae pro talibus casibus adhibetur - cum debes dominus epistularum mutare.

Primum est mandatum facere debes XPENDINGquae omnes nuntios in societate cum statu "pendente" ostendit. In forma simplicissima, praeceptum duobus tantum argumentis appellatur: sequela nomen et nomen coetus;

> XPENDING mystream mygroup
1) (integer) 2
2) 1526569498055-0
3) 1526569506935-0
4) 1) 1) "Bob"
      2) "2"

Manipulus numerum nuntiis unprocessum ostendit pro universo coetu et pro unoquoque subscribente. Tantum Bob habemus cum duobus nuntiis praestantibus quia solus nuntius Alicie petitum cum confirmatum est XACK.

Plus peto informationes uti pluribus argumentis possumus:

XPENDING {key} {groupname} [{start-id} {end-id} {count} [{consumer-name}]]
{initium-id} {end-id} - range identificantium (potes uti "-" et "+")
{numerare} - numerus partus conatusque prohibebit
{consumer-nomen} - group name

> XPENDING mystream mygroup - + 10
1) 1) 1526569498055-0
   2) "Bob"
   3) (integer) 74170458
   4) (integer) 1
2) 1) 1526569506935-0
   2) "Bob"
   3) (integer) 74170458
   4) (integer) 1

Nunc singula singulis nuntiis habemus: ID, nomen subscribens, tempus otiosum in milliseconds ac tandem numerum inceptis traditionis. Duo nuntii ex Bob habemus et otiosi sunt pro 74170458 milliseconds, circiter XX horas.

Quaeso nota quod nemo nos impedit quominus ea quae in re nuntiationis summa erant utendo XRANGE.

> XRANGE mystream 1526569498055-0 1526569498055-0
1) 1) 1526569498055-0
   2) 1) "message"
      2) "orange"

In argumentis idem identifiiferum bis repetendum est. Nunc ut aliquam opinionem habeamus, Alice statuere posset quod post XX horas de tempore, Bob probabiliter non recuperabit, et tempus est ad illas nuntios quaerendas et eas ad Bob processus repetendas. Ad hoc utimur imperio XCLAIM:

XCLAIM {key} {group} {consumer} {min-idle-time} {ID-1} {ID-2} ... {ID-N}

Hoc imperio utentes, nuntium "alienum" accipere possumus quod nondum processit mutato domino ad {consumer}. Sed etiam minimum tempus otiosum praebere possumus. Hoc iuvat condicionem vitare in qua duo clientes dominum eiusdem nuntii simul mutare conantur:

Client 1: XCLAIM mystream mygroup Alice 3600000 1526569498055-0
Clinet 2: XCLAIM mystream mygroup Lora 3600000 1526569498055-0

Primus mos reset downtime et auget traditionem considit. Alter igitur cliens eam petere non poterit.

> XCLAIM mystream mygroup Alice 3600000 1526569498055-0
1) 1) 1526569498055-0
   2) 1) "message"
      2) "orange"

Nuntius feliciter petitus est ab Alicia, quae nunc discit et nuntium agnoscit.

Ex exemplo superiore videre potes petitionem prospere gesta contenta ipsius nuntii reddere. Sed hoc non est necessarium. Optio JUSTI adhiberi potest ad solum IDs nuntium referre. Hoc utile est si in singulis nuntii non cures, et ratio perficiendi augeri vis.

Delivery counter

Contra in output vides XPENDING numerus traditionum cuiusque nuntius est. Talis calculus duobus modis augetur: cum nuntius feliciter petitum est XCLAIM aut cum adhibetur vocatio XREADGROUP.

Solet aliquot nuntiis pluribus temporibus liberari. Summa est quod omnes nuntii tandem processit. Interdum difficultates fiunt cum nuntium dispensando quia nuntius ipse corruptus est, vel nuntius processus errorem causat in codice tracto. Hoc in casu, eveniat ut nemo hunc nuntium progredi possit. Cum contra conatum traditionis haberemus, hoc calculo uti ad eiusmodi casus deprehendere possumus. Cum ergo comes traditio ad summum numerum quem specificas attingit, fortasse sapientius erit talem nuntium in alio filo ponere et notificationem ad administratorem systematis mittere.

Rei publicae sequelae

bigas XINFO varias informationes de filo eiusque coetibus petebant. Exempli gratia, mandatum fundamentale hoc spectat:

> XINFO STREAM mystream
 1) length
 2) (integer) 13
 3) radix-tree-keys
 4) (integer) 1
 5) radix-tree-nodes
 6) (integer) 2
 7) groups
 8) (integer) 2
 9) first-entry
10) 1) 1524494395530-0
    2) 1) "a"
       2) "1"
       3) "b"
       4) "2"
11) last-entry
12) 1) 1526569544280-0
    2) 1) "message"
       2) "banana"

Mandatum superius demonstrat generalem informationem de certo flumine. Nunc exemplum leviter implicatius;

> XINFO GROUPS mystream
1) 1) name
   2) "mygroup"
   3) consumers
   4) (integer) 2
   5) pending
   6) (integer) 2
2) 1) name
   2) "some-other-group"
   3) consumers
   4) (integer) 1
   5) pending
   6) (integer) 0

Praeceptum superius demonstrat generales informationes pro omnibus coetibus determinatis filo

> XINFO CONSUMERS mystream mygroup
1) 1) name
   2) "Alice"
   3) pending
   4) (integer) 1
   5) idle
   6) (integer) 9104628
2) 1) name
   2) "Bob"
   3) pending
   4) (integer) 1
   5) idle
   6) (integer) 83841983

Mandatum superius demonstrat informationes omnes signatores determinati amnis et coetus.
Si mandati syntaxin oblivisceris, ipsum mandatum requiris ad auxilium;

> XINFO HELP
1) XINFO {subcommand} arg arg ... arg. Subcommands are:
2) CONSUMERS {key} {groupname}  -- Show consumer groups of group {groupname}.
3) GROUPS {key}                 -- Show the stream consumer groups.
4) STREAM {key}                 -- Show information about the stream.
5) HELP                         -- Print this help.

Amnis Location Limit

Multae applicationes nolunt notitias in rivum semper colligere. Saepe utile est maximum numerum epistularum per filum habere permissum. In aliis casibus utile est ut omnes nuntios e filo ad aliam horream perseverem moveant cum certum filum ad magnitudinem pervenit. Molem rivi circumscribere potes utens MAXLEN parametri in imperio XADD:

> XADD mystream MAXLEN 2 * value 1
1526654998691-0
> XADD mystream MAXLEN 2 * value 2
1526654999635-0
> XADD mystream MAXLEN 2 * value 3
1526655000369-0
> XLEN mystream
(integer) 2
> XRANGE mystream - +
1) 1) 1526654999635-0
   2) 1) "value"
      2) "2"
2) 1) 1526655000369-0
   2) 1) "value"
      2) "3"

Cum MAXLEN utens, antiqua monumenta automatice deleta sunt cum certam longitudinem attingunt, sic rivus magnitudinem constantem habet. Sed hoc casu non efficacissime putatio in Redis memoriae occurrit. Rem sic emendare potes:

XADD mystream MAXLEN ~ 1000 * ... entry fields here ...

Argumentum superius in exemplo significat quod rivulus longitudinem ad valorem specificum limitare non oportet. In nostro exemplo hic numerus quilibet maior quam vel aequalis esse potest 1000 (exempli gratia 1000 1010 vel 1030). Modo expressis verbis expressimus nos rivum nostrum saltem mille monumentis condere. Haec administratio multo efficacius intus Redis memoriam facit.

Est etiam separatum equos XTRIMquod idem facit;

> XTRIM mystream MAXLEN 10

> XTRIM mystream MAXLEN ~ 10

Pertinax repono ac replicatione

Fluvius Redis asynchrone servis nodi replicatur et servatur ad lima sicut AOF (snapshot omnium notitiarum) et RDB (loga omnium operationum scribentium). Replicatio Sodalitatum Consumerarum statui adiuvatur. Si ergo nuntius in statu "pendente" domini nodi est, tunc in servi nodis nuntius idem status erit.

Singula removere a rivo

Est mandatum speciale delere nuntios XDEL. Praeceptum nomen sequelae accipit quam nuntius IDs delendi:

> XRANGE mystream - + COUNT 2
1) 1) 1526654999635-0
   2) 1) "value"
      2) "2"
2) 1) 1526655000369-0
   2) 1) "value"
      2) "3"
> XDEL mystream 1526654999635-0
(integer) 1
> XRANGE mystream - + COUNT 2
1) 1) 1526655000369-0
   2) 1) "value"
      2) "3"

Cum hoc mandatum uteris, necesse est considerare quod ipsa memoria non statim dimittatur.

Nulla longitudinem fluminum

Discrimen inter fluvios et alias structuras Redis notitiarum est quod, cum aliae structurae datae non iam elementa in se habent, ut latus effectus, ipsa structura notitia ex memoria removebitur. Sic, exempli gratia, paro sortitas totaliter removebitur cum ultimum elementum ZREM vocationem removet. Sed fila etiam sine elementis intus in memoria manere permittuntur.

conclusio,

Fluvius Redis specimen est ad sectores creandos, nuntius queues, colligationes unitae, et chat systemata historiae custodiendae.

Ut olim dixit Niklaus Wirth, programmata sunt algorithmorum plus structurarum notitiarum , et Redis iam utrumque tibi dat .

Source: www.habr.com