Rumah > Soal Jawab > teks badan
巴扎黑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
巴扎黑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;
大家讲道理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.
阿神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