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,然后在本地进行过滤了。这种查询如果很频繁,而且过滤条件不同的话,建议一次性拿回来全部,然后统一过滤。