betydelig udgivelse af datacache-systemet i hukommelsen , som håndterer data i nøgle/værdi-format og kendetegnes ved brugervenlighed. Memcached anvendes typisk som en letvægtsløsning til at accelerere ydeevnen på højbelastede websteder ved at cache adgangen til databaser og mellemliggende data. Kode under BSD-licensen.
I den nye version er implementeringen af lageret "" stabiliseret, og det samles nu som standard (muligheden "—disable-extstore" er tilgængelig i configure-scriptet for at deaktivere det), men skal aktiveres eksplicit ved opstart (gamle installationer vil fortsætte med at fungere uden ændringer efter opdateringen). Selvom det overordnede lager "extstore" er anerkendt som stabilt, anbefales det at være forsigtig ved implementering i meget store systemer.
Extstore gør det muligt at bruge SSD/Flash-lagring til at udvide cachen. Ligesom ved brug af hukommelse er lagring på Flash ikke permanent og nulstilles ved genstart. Anvendelsesområdet for den nye tilstand angives som at sikre effektiv caching af store datamængder. Ved brug af "extstore" opbevares nøgler og metadata som før kun i hukommelsen, men tilknyttede store data, der overstiger den fastsatte grænse, gemmes i ekstern lagerplads, og der forbliver kun en henvisning i RAM.
Hvis de data, der er knyttet til nøglen, er små, fungerer Memcached som sædvanligt, holder dataene i hukommelse og tilgår ikke den eksterne lagring. Hvis der er meget ledig hukommelse, kan de mest efterspurgte data også være helt i cachen i hukommelsen (for eksempel kan det angives, at kun objekter større end 1024 byte, som ikke er blevet tilgået i 3600 sekunder, skal nulstilles på Flash).
Implementeringen er optimeret til at sikre maksimal ydeevne og minimal belastning på CPU'en, hvilket går ud over lagringseffektivitet (høj grad af fragmentering). For at forlænge levetiden på Flash-lagring bufferes dataene og skrives sekventielt til lageret. For at bevare cachen mellem genstarter kan den nye mulighed i version 1.5.18 anvendes til at skrive en dump med cachen til en fil. Ved næste opstart kan cachen genoprettes fra denne fil for at undgå spidser i belastningen på indholdshåndtererne på grund af en ikke-fuld cache (cachen bliver straks "varm").
Det andet vigtige ændring i Memcached 1.6 var en omlægning af koden til netværksinteraktion, som er tilpasset til automatisk behandling af batch-forespørgsler inden for et enkelt systemanrop. Tidligere, ved overførsel af flere "GET"-kommandoer i et enkelt TCP-pakke, sendte memcached resultaterne ved at udføre separate systemanrop. I Memcached 1.6 aggregeres svarene og returneres ved at sende ét systemanrop. Som et resultat er der nu i gennemsnit 1.5 nøgler pr. systemanrop, hvilket viser en reduktion af CPU-belastningen på op til 25% og et fald i latenserne med et par procent i testene.
Omlægningen af netværksundersystemet har også gjort det muligt at overgå til dynamisk tildeling af buffere efter behov, i stedet for statisk tildeling af buffere. Denne optimering har reduceret hukommelsesforbruget i ventetid på nye kommandoer gennem et etableret klientforbindelse fra 4.5 KB til 400-500 byte, og har også givet mulighed for at slippe af med mange kald til malloc, realloc og free, som fører til unødvendig fragmentering af hukommelsen på systemer med et stort antal forbindelser. Hver arbejdstråde behandler nu sin egen pulje af buffere til læsning og skrivning for aktive klient-forbindelser. For at justere størrelsen på disse buffere
er der mulighederne „-o resp_obj_mem_limit=N“ og „-o read_buf_mem_limit=N“.
I version 1.6 er der også blevet annonceret overgangen til at være forældet til interaktion med serveren. Vedligeholdelse af det binære protokol og fejlrettelse vil fortsætte, men nye funktioner og opdateringer af eksisterende funktioner vil ikke blive overført. vil fortsætte udviklingen uændret. I stedet for det binære protokol er der kommet et nyt protokol (den tekstlige version af protokollen med kompakte meta-kommandoer), der viser det optimale forhold mellem ydeevne og pålidelighed. Det nye protokol dækker alle operationer, der tidligere var tilgængelige via de tekstlige og binære protokoller.
Kilde: opennet.ru
