Результат запроса MySQL - memcahed с использованием Java - PullRequest
1 голос
/ 21 ноября 2011

Я действительно новичок в Memcache.Я только что проверил Memcache на Java, и он отлично работает.Я хочу сохранить результат запроса MySQL в ключе Memcache.Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 21 ноября 2011

Если вы используете Spymemcached, то вам просто нужно поместить результат запроса в объект Serializable и отправить его в memcached. Например,

client.set ("имя ключа", 0, объект);

где тип объекта - это сериализуемый объект, который содержит результат запроса. Spymemcached позаботится о выполнении всей сериализации, и когда вы получите объект позже, Spymemcached выполнит десериализацию объекта для вас.

0 голосов
/ 08 сентября 2012
import net.spy.memcached.MemcachedClient;
public class memfunc implements java.io.Serializable{
    Connection conn;
    private int urlid;
    private String er;
    private static MemcachedClient c = null;
static {
      try {
c = new MemcachedClient(new InetSocketAddress("127.0.0.1",11211));
} catch (IOException e) {
         e.printStackTrace();
         System.exit(-1);
      }
   }
public float[][] avgInfo(){
        String key=host;
        host=hostParser(host);
        String[] info=new String[6];
        if(c.get(key)==null && key==host){
                 ---------your code----
Future<Boolean> set= c.set(key, 3600, info);
             }
    return (String[]) c.get(key);}
0 голосов
/ 21 ноября 2011

Если бы у меня была склонность сделать это таким образом, я бы написал быстрый сериализатор / десериализатор, используя ByteArray [Output / Input] Stream и Object [Output / Input] Stream, и сохранял бы полученный байтовый массив, используя memcache.Возможно, вам придется прочитать результаты в массив и затем сериализовать, чтобы сделать это, но поэкспериментируйте, чтобы увидеть, что работает.

IMO, вам, вероятно, лучше использовать некоторую форму JPA, которая будет обрабатывать проблему кэширования дляВы, без беспорядка тайников, которые могут устареть.Посмотрите в Hibernate / Eclipselink, если можете, поскольку это, вероятно, даст вам лучшую производительность (меньше сериализации) и позволит избежать проблем с устаревшим кэшем.

JBoss Cache также может обрабатывать pojos, поэтому, если ваши данные представлены объектами java (JPA всегда есть) вы можете хранить результаты в JBoss Cache.POJO можно также легко сериализовать и хранить в memcached.

Опции, которые я представил выше:

  • Сериализация массива MySQL Results / Result и сохранение в memcached
  • Используйте JPA и его внутренний кеш.(Зависит от реализации)
  • Используйте структуру кэша, такую ​​как JBoss Cache, для хранения массива MySQL Results / Result ИЛИ результатов JPA
  • Сериализация результатов JPA / POJO в memcached
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...