cari

Rumah  >  Soal Jawab  >  teks badan

像网易新闻收藏的功能,如果使用redis做缓存的话,应该如何实现?

像网易新闻收藏的功能,如果使用redis做缓存的话,应该如何实现?

迷茫迷茫2798 hari yang lalu795

membalas semua(4)saya akan balas

  • 巴扎黑

    巴扎黑2017-04-22 09:01:31

    Jika berita itu mempunyai ID atau pengecam unik. Anda boleh mempertimbangkan untuk menggunakan jenis koleksi redis. Dan keunikan koleksi menghalang masalah penambahan pendua!
    redis.sadd('personmark:userID',newsID);//Tambah elemen pada koleksi pengguna
    redis.smembers('personmark:userID');//Dapatkan semua ID berita yang dikumpul oleh pengguna pada satu masa

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-22 09:01:31

    Gunakan set zset yang diisih; kunci ialah ID pengguna; ahli ialah ID unik berita; Skor ialah kenaikan tarikh bermula dari hari sebelumnya (contohnya, bermula dari 2015-1-1, markah hari ini ialah 155? setelah anda mempunyai skor, anda boleh mengeluarkannya tanpa mengisih dan memaparkannya secara langsung; zadd(kunci, markah, ahli):Tambah berita
    zrank(kunci, ahli): Mengembalikan mengikut markah daripada kecil kepada besar, iaitu berita yang dikumpul diisih mengikut tarikh daripada baharu kepada lama; zrangebyscore(kunci, min, maks): Mengembalikan koleksi skor dari awal hingga akhir, digunakan untuk merealisasikan paparan berita yang membelok halaman;

    balas
    0
  • 大家讲道理

    大家讲道理2017-04-22 09:01:31

    kunci: news_fav_uid
    nilai: koleksi ID berita (tatasusunan)
    di mana uid ialah ID pengguna.
    $news_ids = array(1024,1025,1026);
    echo json_encode($news_ids);
    Tidak kira anda menggunakan Memcached/Redis/MySQL, anda boleh menyimpannya seperti ini.
    array_push menolak koleksi baharu ke penghujung tatasusunan $news_ids.
    Jika anda ingin mengisih mengikut masa, anda hanya memerlukan json_decode untuk menyahkod, array_reverse untuk membalikkan tatasusunan, dan kemudian untuk setiap output.

    balas
    0
  • 阿神

    阿神2017-04-22 09:01:31

    Jawapan di tingkat 1 sangat bagus, tetapi saya hanya ingin menambah bahawa tidak perlu menggunakan redis sebagai cache di sini, hanya gunakan ia sebagai storan data, kerana redis juga pangkalan data

    balas
    0
  • Batalbalas