redis 如何实现数据按 id 或者 timestamp 筛选?
比如,像 sql 这样
sql
select * from news_table where id > '512'; select * from news_table where id > '512' and cat_id = '2'; select * from news_table where pubdate > 'yesterday';
sql
-- news_table info CREATE TABLE `news_table` ( `id` int(10), `cat_id`, int(10), `title` text, `content` longtext, `pubdate` int(10), );
Sila lihat pada zset redis, scop boleh mencapai keperluan anda, tetapi jenis pertanyaan yang anda nyatakan dengan id yang lebih besar daripada itu adalah yang terbaik untuk menukar idea dalam redis, ini bukan titik kukuhnya
Saya rasa pangkalan data Key-Value tidak sesuai untuk aplikasi menapis mengikut syarat.
Jika
512
syarat ini ditetapkan, anda boleh menambah elemen lebih besar daripada 512 pada set apabila menambah artikel.yesterday
boleh dilaksanakan menggunakanEXPIRE
.Jika keadaan penapisan tidak dapat ditentukan semasa reka bentuk, jadual Hash/senarai terpaut mesti dilalui, yang tidak akan menjadi sangat cekap...
Apakah itu 512? Jika ia adalah nombor dengan makna istimewa dan selalunya perlu disemak dengan cara ini, anda disyorkan supaya menyimpan set id>512 dalam peta berasingan dalam redis, seperti map_512 dan hanya mengeluarkan keseluruhan peta setiap kali . Jika tidak, anda hanya boleh mengeluarkan peta setiap kali dan menapisnya secara setempat. Jika pertanyaan jenis ini sangat kerap dan keadaan penapisan berbeza, adalah disyorkan untuk mendapatkannya sekali gus dan kemudian menapisnya secara seragam.
Terima kasih semua atas balasan anda! :)
Jika redis tidak sesuai untuk keperluan tersebut, sila cadangkan nosql yang sesuai seperti mongodb?
Jika data kerap berubah, seperti menambah, mengubah suai atau memadam kekunci, anda boleh menggunakan mongodb, yang mudah dan menyeronokkan~
Buat indeks lain atau tukar kepada mongodb