¿Cómo limitar el almacenamiento de datos en el almacenamiento local y recuperarlos?

Hola, necesito limitar los datos que se agregan a mi almacenamiento local. Solo necesito que se almacenen 5 elementos si el usuario agrega el sexto elemento, el primer elemento debe eliminarse. Logré esa parte, pero cuando la recupero, recupera los datos eliminados y salta en el cuarto elemento. ¿Algunas ideas?

como configuro las cosas

<code> var _i = 0 //global;
 storage.setItem(_i, URL);
</code>

checkLimit

<code>if(storage.length >= 5)
{
   var _a = storage.getItem(0);
   storage.removeItem( _a );
   _a += 1;
}
</code>

Al recuperarlo

<code>for( var _x = 1; _x <= storage.length - 1; _x++)
{
  var _url = storage.getItem(_x);
}
</code>
actualizar

Oh, olvidé mencionar que cuando uso el índice de clave para obtener el elemento, no muestra los datos eliminados, pero de alguna manera se salta el cuarto.

actualización 2

Ahora no se salta el cuarto registro pero muestra los datos eliminados y no muestra los últimos datos agregados. p.ej

<code>the //first
avengers //second
are //third
coming //fourth
now //fifth
excited //sixth
</code>

Ya que específicamente lo limito a cinco (5)the debe ser eliminado de la lista yexcited debería ser añadido. Lo está haciendo bien, pero cuando cierro la aplicación e intento recuperar los datos que devuelve

<code>the
avengers
are
coming
now
</code>

y no se muestraexcited ¿Tengo sentido?

Respuestas a la pregunta(1)

Su respuesta a la pregunta