ホームページ  >  に質問  >  本文

redis 如何实现数据筛选

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),
);
黄舟黄舟2759日前1333

全員に返信(6)返信します

  • 高洛峰

    高洛峰2017-04-22 09:02:37

    Redis の zset を見てください。scop は要件を達成できますが、100% を超える ID で言及した種類のクエリは Redis で考えを変えるのが最善です。これは Redis の強みではありません

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-22 09:02:37

    Key-Valueデータベースは条件でフィルタリングするアプリケーションには適していないと思います。

    もし512这个条件是固定的,可以在添加文章的时候把大于512的元素加到一个集合里。
    yesterday可以用EXPIREが叶ったら。

    設計中にフィルタリング条件を決定できない場合、ハッシュテーブル/リンクリストを走査する必要があり、あまり効率的ではありません...

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-22 09:02:37

    512とは何ですか?特別な意味を持つ数値であり、この方法で頻繁にチェックする必要がある場合は、id>512 のセットを redis の別のマップ (map_512 など) に保存し、毎回マップ全体を取り出すことをお勧めします。 。そうでない場合は、毎回マップを取り出してローカルでフィルターすることしかできません。この種のクエリが頻繁に発生し、フィルタリング条件が異なる場合は、すべてを一度に取得して均一にフィルタリングすることをお勧めします。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-22 09:02:37

    みなさん、ご返信ありがとうございました! :)

    Redis がそのようなニーズに適さない場合は、mongodb などの適切な nosql を推奨してください。

    返事
    0
  • ringa_lee

    ringa_lee2017-04-22 09:02:37

    キーの追加、変更、削除など、データが頻繁に変更される場合は、簡単で楽しいmongodbを使用できます~

    返事
    0
  • 高洛峰

    高洛峰2017-04-22 09:02:37

    別のインデックスを作成するか、mongodb に変更します

    返事
    0
  • キャンセル返事