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
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;
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.
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
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
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;
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.
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