redis 如何实现数据筛选
黄舟
黄舟 2017-04-22 09:00:37
0
6
1364

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)
小葫芦

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

いいねを押す +0
伊谢尔伦

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

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

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

いいねを押す +0
大家讲道理

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

いいねを押す +0
Ty80

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

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

いいねを押す +0
左手右手慢动作

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

いいねを押す +0
小葫芦

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート