redis 如何实现数据筛选

 陈凯105_462 发布于 2022-10-25 10:30

redis 如何实现数据按 id 或者 timestamp 筛选?
比如,像 sql 这样

sqlselect * 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),
);
6 个回答
  • 另外建立索引或者换mongodb

    2022-10-26 23:19 回答
  • 如果数据经常变动,比如添加、修改、删除键,可以用mongodb,轻松又愉快~

    2022-10-26 23:19 回答
  • 多谢各位大牛的回复! :)

    如果 redis 不适合这样的需求,求推荐一款适合的 nosql 比如 mongodb?

    2022-10-26 23:19 回答
  • 512 是一个什么数?如果是有特别含义的数,经常需要这样查,那么建议你将id>512的集合在redis中单独用一个map存储,如map_512,每次直接拿出整个map就行。如果不是,那就只能每次都取出map,然后在本地进行过滤了。这种查询如果很频繁,而且过滤条件不同的话,建议一次性拿回来全部,然后统一过滤。

    2022-10-26 23:19 回答
  • 我觉得Key-Value数据库不太适合按条件筛选的应用吧。

    如果512这个条件是固定的,可以在添加文章的时候把大于512的元素加到一个集合里。
    yesterday可以用EXPIRE实现。

    如果筛选条件在设计时无法确定的话,就要遍历Hash表/链表了,效率不会太高…

    2022-10-26 23:19 回答
  • 请题主看看redis的zset,scop可以实现你的要求,但是你说的id大于的那种查询最好在redis换换思路,这不是它的长项

    2022-10-26 23:19 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有