Programim dhe zhvillim, javascript, python, php, html

Përdorimi i nginx për të shërbyer përmbajtjen direkt nga një cache redis

Unë jam duke përdorur nginx për të kaluar kërkesat në një aplikacion Node. Aplikacioni në thelb vepron si një memorie në distancë për html (kontrollon për të parë nëse ajo që kërkon përdoruesi është në db redis, nëse është thjesht tregojeni atë, nëse jo, kapeni dhe ruajeni në cache-in e redis dhe shërbejeni.)

Unë isha kurioz nëse kishte gjithsesi për të anashkaluar goditjen e aplikacionit Node duke bërë që nginx të shërbejë përmbajtjen direkt nga redis? Unë kam qenë duke mashtruar me modulin http_redis, por me të vërtetë nuk mund ta bëj të funksionojë.

Një shembull i thjeshtë do të ishte: http://mywebsite.com/a ku nginx do të shërbente përmbajtjen në " tastin a' ose ia kaloni aplikacionit të nyjeve nëse çelësi nuk ekzistonte. A është edhe e mundur kjo?

29.12.2010

Përgjigjet:


1

Ndoshta diçka më e vështirë për t'u konfiguruar sesa Webdis, por mund ta bëni këtë direkt në daemon nginx me disa module shtesë si redis2-nginx-module. Ju do të duhet të ripërpiloni nginx.

Ka disa shembuj të mirë të konfigurimit në faqen kryesore.

Për shembull:

# GET /get?key=some_key
location /get {
    set_unescape_uri $key $arg_key;  # this requires ngx_set_misc
    redis2_query get $key;
    redis2_pass foo.com:6379;
}

Sigurisht, me pak më shumë konfigurim nginx, mund të merrni një model tjetër URL.

Vini re se për këtë shembull, do t'ju duhet të përpiloni edhe modulin ngx_set_misc.

30.12.2010

2

Ju duhet të jeni në gjendje të merrni diçka duke konfiguruar Nginx si një përfaqësues të kundërt për Webdis.

Mënyra se si përdorni Webdis është se vendosni të gjithë komandën në URL, kështu që për GET çelësin a ju kërkoni /GET/a. Kjo do të thotë që nëse gjithçka që dëshironi të shërbeni është e disponueshme duke përdorur GET, mund të bëni diçka të tillë në Nginx:

location / {
  rewrite ^(.*)$ /GET/$1 break;
  proxy_pass http://127.0.0.1:7379/;
}

(Unë po shkruaj konfigurimin nga maja e kokës sime këtu, sintaksa mund të jetë pak e fikur).

Megjithatë, projekti Webdis është shumë i ri, kështu që nuk mund të thuhet se sa mirë do të funksionojë, dhe përgjigjet janë dokumente JSON me disa push shtesë që ndoshta nuk dëshironi t'i ktheni.

29.12.2010
  • hmmm, do ta kontrolloj. Unë nuk e di se kam shumë për nginx kështu që as nuk e dija nëse ajo që po kërkoja ishte e mundur. Mendoj se për metodën tuaj, thjesht do të më duhej të shikoja nëse shërbimi i tij nga Node ose nga Webdis do të ishte më i shpejtë. Duket se nginx është në gjendje të shërbejë drejtpërdrejt nga memcache dhe moduli http_redis duket i modeluar pas tij. 29.12.2010
  • Nëse po e përdorni këtë edhe me pub/sub, do të dëshironi të çaktivizoni proxy_buffering dhe proxy_read_timeout në një vlerë të gjatë të përshtatshme. 07.11.2014

  • 3

    E di që kjo është një temë e vjetër, por megjithatë, kjo mund të jetë e dobishme për disa. Kam provuar të njëjtën qasje si ju që keni shërbimin nginx nga Redis drejtpërdrejt pa goditur duke përdorur HttpRedis2Module në nginx. Unë isha i lumtur kur e vura në punë sepse ishte një sherr me të, por kur bëra disa teste stresi kam frikë se dha rezultate vërtet të këqija.

    Në fakt ishte pak më i shpejtë dhe shumë më i qëndrueshëm për të shërbyer duke përdorur nginx->php->mongodb sesa thjesht duke përdorur nginx->redis me modulin.

    23.05.2012
  • A keni vendosur një keepalive për pishinën tuaj redis në nginx? Herën e fundit që po testoja këtë keepalive ishte një ndryshim midis slover se php -› redis dhe shumë më i shpejtë... 27.05.2012
  • Nuk jam i befasuar që PHP+MongoDb është më i shpejtë se thjesht Redis në standarde, sepse Redis është një proces i vetëm pa multi-threading që do të thotë se i trajton të gjitha kërkesat në mënyrë serike me një proces, pavarësisht sa bërthama të CPU-së keni. Pra, ndërsa është shumë i shpejtë, është mjaft e mundur që PHP+MongoDb të jetë më i shpejtë me konkurencë të lartë pasi ato kanë aftësinë të përdorin plotësisht të gjitha bërthamat e CPU duke trajtuar shumë kërkesa paralelisht. Gjithashtu MongoDb po shkëlqen shpejt. 06.11.2012
  • Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..