찾다

 >  Q&A  >  본문

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),
);
黄舟黄舟2798일 전1369

모든 응답(6)나는 대답할 것이다

  • 高洛峰

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

    redis의 zset을 살펴보세요. scop은 귀하의 요구 사항을 충족할 수 있지만 100%보다 큰 ID로 언급한 쿼리 종류는 Redis에서 아이디어를 변경하는 것이 가장 좋습니다. 이는 장점이 아닙니다.

    회신하다
    0
  • 伊谢尔伦

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

    Key-Value 데이터베이스는 조건으로 필터링하는 애플리케이션에는 적합하지 않다고 생각합니다.

    512 이 조건이 해결되면 기사를 추가할 때 512보다 큰 요소를 세트에 추가할 수 있습니다.
    yesterdayEXPIRE을 사용하여 구현할 수 있습니다.

    설계 시 필터링 조건을 결정할 수 없는 경우 해시 테이블/링크드 리스트를 순회해야 하는데 이는 그다지 효율적이지 않습니다...

    회신하다
    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
  • 취소회신하다