¿Cómo verifico en PHP si un valor está almacenado en Memcache sin recuperarlo? No me gusta ir a buscarlo porque los valores que he establecido tienen un tamaño de 1MB y después de recuperarlo, no me sirve, así que estoy desperdiciando recursos. Estoy usando esto en una secuencia de comandos que comprueba si ciertas claves se almacenan en caché en Memcache y, de no ser así, las lee desde un origen de datos lento y las establece en Memcache.Comprobar si existe una clave en Memcache
Editar: ¿Qué ocurre si uso Memcached::append
para anexar NULL
a la clave que estoy revisando? Devuelve TRUE
en caso de éxito o FALSE
en caso de error. El Memcached::getResultCode
devolverá Memcached::RES_NOTSTORED
si la clave no existe. De esta forma verifico si la clave existe y debería poner la llave en la parte superior de la lista LRU ¿verdad?
Gracias.
Sí, pero primero debo asegurarme de que no esté configurado. Porque si ya está configurado, entonces desperdiciaría la lectura de los datos de una fuente lenta. Si utilizo get() para verificar, perderé IO de red porque el tamaño es 1MB. – Matic
@Matic el "problema" es que memcached no se diseñó con IO de red en mente, así que supongo que esa es la razón por la que se omitió dicha funcionalidad. Si la red IO es un problema, es mejor utilizar una base de datos kv. Entiendo que a veces simplemente no desea una asignación adicional, incluso si la red IO no es un problema, pero esto no es posible con memcached. Redis tiene una de esas características. – themihai