dimensione massima di un elemento di storage in memcache è 1.048.576 byte (1 MB), la serializzazione di un array richiede un po 'di spazio.
se si dovesse strutturare l'array nel modo più semplice:
array(
[0] => 1,
[1] => 2,
[2] => 3
)
chiave è generato automaticamente e il valore di essere l'id utente.
un array serializzato di 5000 utenti numerati 1-5000 utilizzando questa struttura ha una lunghezza di stringa di 67792 caratteri, 50000 utenti produce un array di 777794 caratteri.
la numerazione da 100.000 a 150000 produce una stringa serializzata di 838917 caratteri.
quindi a 50k utenti (come indicato nella domanda precedente), sarà probabilmente sotto il limite di 1 MB. se invece hai una cache locale (APC, ecc ...), usalo, o se per qualsiasi motivo NON hai bisogno di tutti gli ID contemporaneamente, ti consiglio caldamente di dividere i risultati o semplicemente di usare il DB.
pensa anche alla struttura dati che stai memorizzando in memcached. Se stai usando la cache semplicemente per darti un elenco di chiavi primarie da cercare, hai bisogno degli altri dati?
Great thanks e nel mio caso l'ID utente, URL e nome sarebbe tutto essere un array all'interno di una serie di fino a 5.000 utenti, è così male? – JasonDavis
Hai una REASON per archiviare record 5K in memcache? Penso che potresti perdere il punto di cache. – doomspork
Dipende. Dato il mio semplice esempio, quell'array richiederebbe ~ 500 byte. Moltiplicando che per 5.000 sei a 2.5 MB. Questo è un oggetto piuttosto grande da attaccare in memcached. – hobodave