Redis Storage + Redis Journal + Redis Session Handler – Kdyby/Redis

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Kacer_Bob
Člen | 7
+
0
-

Změnil jsem PHP na verzi 5.3.13 a tam je už tato chyba opravena.

a.m
Člen | 10
+
0
-

Na testu (Debian) používám PHP 5.3.3 a bohužel ho v tuhle chvíli nemůžu aktualizovat na nejnovější.

Filip Procházka
Moderator | 4668
+
0
-

Nedávno byla vydána verze 2.2.0.

Od začátku vývoje se toho hodně změnilo, například nyní se používá nativní PHP rozšíření phpredis, které se stará o komunikaci a protokol jako takový.

Ale hlavně bych chtěl poděkovat @matej21, který strávil několik večerů nad optimalizací nového LUA Journalu a nyní jsme se z invalidace tisícu klíčů dostali na statisíce tagů pro statisíce klíčů bezpečné invalidace.

simPod
Člen | 383
+
0
-

Chci se zeptat, mám v boostrap tento kód:

$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->createRobotLoader()
        ->addDirectory(APP_DIR)
        ->addDirectory(LIBS_DIR)
        ->register();


$configurator->addConfig(__DIR__ . '/config/config.neon');
\Kdyby\Redis\DI\RedisExtension::register($configurator);
$container = $configurator->createContainer();

Ale dostávám Fatal Error Class 'Nette\Loaders\NetteLoader' not found v File: ...\libs\Kdyby\Redis\DI\RedisExtension.php Line: 28.

Co dělám špatně? Při instalaci jsem nepoužil Composer. Změna na \Nette\Loaders\NetteLoader nepomohla. Díky

Filip Procházka
Moderator | 4668
+
0
-

Kdyby nepodporuje minifikované verze Nette. Doporučuji instalaci přes Composer.

simPod
Člen | 383
+
0
-

Aha to bude ono. Měl jsem nette minifikované. Každopádně jsem nainstaloval přes Composer a dostávám „Please install and enable the redis extension. https://github.com/…ff/phpredis/“ To asi znamená, že si musím rozšířit funkcionalitu serveru o daný extension (?). Jak se to řeší u poskytovatelů hostingu? Víte o nějakých, kteří dané extension mají nainstalováno? Dík

Filip Procházka
Moderator | 4668
+
0
-

A ty máš hosting, který ti nedovolí nahodit vlastní extension do phpka, ale dovolí to používat redis? :)

Pokud máš odvahu, můžeš použít starou verzi kdyby/redis, která pracovala přes sockety a tedy extension nebyl potřeba.

Ale pokud jsi narazil na situaci, že potřebuješ memory databázi a chceš používat redis, těch pár korun navíc za VPS už ti neublíží :)

simPod
Člen | 383
+
0
-

Jasně, chápu :) Díky

LeonardoCA
Člen | 296
+
0
-

Hosiplan: napada te v cem by mohl byt problem, kdyz redis pri spusteni CLI skriptu, ktery se forkne aby bezel jako daemon vyhodi exception ve forknutem procesu pri cteni objektu z cache?

Redis Client Exception: „ERR unknown command ‚QUIT*2‘“
vyhozeno pri volani metody send na RedisClient.php:355

Pro mysql se connection musi po forknuti obnovit, to same bude platit asi pro redis, ale dival jsem se ze redis vola connect pred kazdym send.

Problem je pokud forkuji process po nacteni bootstrap.php (a sestaveni containeru), pokud se forkne pred, tak problem neni, jen se neda vyuzit autoloading a musi se potlacit uvodni hlaska o spusteni forknuteho processu, protoze pak vyhodi ini_set error ‚headings already sent‘ …

Kdyby se ti chtelo to testnout tak pouzivam http://kvz.io/…mons-in-php/

Editoval LeonardoCA (13. 11. 2013 20:08)

Filip Procházka
Moderator | 4668
+
0
-

Hmm, s tímhle nemám vůbec žádné zkušenosti, ale měl bych pro tebe nápad. Nechceš raději zapínat ty procesy samostatně místo forkování? Tyhle wtf by ti zmizely :)

lukyrys
Člen | 36
+
0
-

Zdravím, používám již nějakou dobu plugin pro redis storage, je supr. Ale po updatu projektu do nette 2.1 a upgrade redis addonu z githubu se potykam s problemem kdy mi ladenka vyhodi tento error.

Nette\Utils\JsonException #4
Syntax error, malformed JSON

Problem je (dle meho mineni) ze tato chyba vyskakuje nahodile. Nesetkal se s tim jiz nekdo? Muzu v pripade potreby poskytnout html z ladenky.

Diky Lukas.

Filip Procházka
Moderator | 4668
+
0
-

Pokud se bojíš o citlivá data můžeš mi ji prosím poslat na email filip@prochazka.su? Laděnka by se určitě hodila. Btw, upgradoval jsi na nejnovější verzi a smazal cache?

lukyrys
Člen | 36
+
0
-

Filip Procházka napsal(a):

Pokud se bojíš o citlivá data můžeš mi ji prosím poslat na email filip@prochazka.su? Laděnka by se určitě hodila. Btw, upgradoval jsi na nejnovější verzi a smazal cache?

Ano cache smazana i nekolikrat. Mate to na mailu.

Filip Procházka
Moderator | 4668
+
0
-

Nesmazal, máš tam stará data. Snaží se ti to decodovat json, který není json ale standardní výstup serialize() což znamená stará data.

# nula je číslo databáze
$ redis-cli -n 0 flushdb

musíš smazat cache i v redisu

lukyrys
Člen | 36
+
0
-

Filip Procházka napsal(a):

Nesmazal, máš tam stará data. Snaží se ti to decodovat json, který není json ale standardní výstup serialize() což znamená stará data.

# nula je číslo databáze
$ redis-cli -n 0 flushdb

musíš smazat cache i v redisu

aha jasne maznout i redis. to je to co se mi prave nechtelo protoze se v tom drzi i sessiony takze to odhlasi vsechny lidi.. Takze to maznu az nejak v noci kdy bude mensi pristupnost.
Diky dam vedet.

David Matějka
Moderator | 6445
+
0
-

je to vsechno prefixovany, ted jsou tam pro:
Storage – Nette.Storage
Journal – Nette.Journal
Session – Nette.Session

muzes smazat jen specificky klice

redis-cli -n 0 KEYS "Nette.Journal:*" | xargs redis-cli -n 0 DEL
redis-cli -n 0 KEYS "Nette.Storage:*" | xargs redis-cli -n 0 DEL

nevim, jak byly prefixovany meta klice, tak si to vyjed a smaz je kdyztak taky

Filip Procházka
Moderator | 4668
+
0
-

To mi jako chcete tvrdit, že jsem tu dokumentaci psal zbytečně? :P

Jasně tam mám napsané, že když používáte redis na session, máte použít samostatnou databázi, aby se dala cache mazat příkazem redis-cli -n 0 flushdb, což je nejefektivnější možný způsob.

Ale dobrá myšlenka, upravím defaulty aby to fungovalo správně i lidem co nečtou dokumentaci ;)

David Matějka
Moderator | 6445
+
0
-

@Filip Prochazka: no a nekdo bude mit na databazi 1 jinou app a tim to rozes…bijes jeste vic. co takhle dat specifikaci databaze jako povinny parametr?

Editoval matej21 (5. 1. 2014 0:15)

zimmi
Člen | 94
+
0
-

@Filip Procházka: Je možné používat Redis spolu s nějakou SQL databází? Například mít v Redisu uložené sessions a v SQL ostatní data? Má to smysl? Má to nějaké nevýhody? Děkuju moc za odpovědi, ta technologie mě zaujala.

mkoubik
Člen | 728
+
0
-

Má to hodně velký smysl: https://slideslive.com/…ealnem-svete.

zimmi
Člen | 94
+
0
-

@mkoubik: Díky, mrknu na to.

Filip Procházka
Moderator | 4668
+
0
-

Další otázky prosím zakládejte jako samostatná témata na novém fóru help.kdyby.org. Díky!