2013-08-15 2 views
0

Je travaille sur le deuxième niveau de mon implémentation de cache à 2 niveaux. Je considère une option d'objet de sérialisation utilisant le mécanisme de sérialisation Java standard (Serializable) puisque cette fonctionnalité est incluse dans JDK. Tout ce que je sais sur les objets d'entrée, c'est qu'ils vont implémenter l'interface Serializable. Pour autant que je sais Java entrée/OutputObject flux sérialisation de soutien et désérialisation de plusieurs objets, par exemple:Mise en œuvre du cache, la bonne façon d'implémenter le second niveau (système de fichiers)

  ObjectOutputStream oout = new ObjectOutputStream(
        new FileOutputStream("output.bin")); 

      oout.writeObject(o1); 
      oout.writeObject(o2); 
      oout.writeObject(o3); 
      oout.flush(); 
      oout.close(); 

      ObjectInputStream oin = new ObjectInputStream(
        new FileInputStream("output.bin")); 

      Object ob1 = oin.readObject(); 
      Object ob2 = oin.readObject(); 
      Object ob3 = oin.readObject(); 

Mais ici je n'ai qu'un ordre possible de lire et je n'ai pas possibilité d'ajouter/supprimer/mettre à jour les objets aléatoires depuis/vers le fichier binaire "output.bin". J'ai besoin de cela parce que mon idée pour le deuxième niveau de mon cache utilise le même mécanisme qui est implémenté dans hashmap/hashtable, de sorte que les buckets seront des répertoires et les chaînes seront des fichiers. Donc, je cherche des façons correctes de comment je peux implémenter une telle sérialisation binaire, quand je serai capable de stocker plusieurs objets dans un fichier et en même temps je pourrai ajouter/supprimer un objet aléatoire de mon fichier binaire . Pourriez-vous s'il vous plaît conseiller à ce sujet?

Merci.

+0

Avez-vous besoin d'utiliser un cache sur disque? Pourquoi pas un cache mémoire fourni par Ehcache? Le cache sur disque semble mauvais pour les performances. – jbird

+0

Oui, il étudie la tâche, donc je dois utiliser le cache FS pour le second niveau. Le premier niveau est déjà implémenté, il stocke les objets en RAM. Je veux utiliser une politique de réécriture pour mon cache à 2 niveaux, de sorte que le dernier élément récemment utilisé ira au second niveau. – XZen

Répondre

0

Etes-vous autorisé à écrire sur plusieurs fichiers sur le disque? Utilisez une carte pour obtenir/mettre le fichier spécifique qui a vos données sérialisées. File.createTempFile() peut vous obtenir un nom unique pour chaque fichier.

Questions connexes