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), );
伊谢尔伦2017-04-22 09:02:37
我覺得Key-Value資料庫不太適合篩選出來的應用吧。
如果512
这个条件是固定的,可以在添加文章的时候把大于512的元素加到一个集合里。yesterday
可以用EXPIRE
實作。
如果篩選條件在設計時無法確定的話,就要遍歷Hash錶/鍊錶了,效率不會太高…
大家讲道理2017-04-22 09:02:37
512 是一個什麼數?如果是有特別意義的數,常常需要這樣查,那麼建議你將id>512的集合在redis中單獨用一個map存儲,如map_512,每次直接拿出整個map就行。如果不是,那就只能每次都取出map,然後在本地進行過濾了。這種查詢如果很頻繁,而且過濾條件不同的話,建議一次性拿回來全部,然後統一過濾。