搜尋

首頁  >  問答  >  主體

Redis 是什麼? 有什麼用?

各位大神,這個是面試題啊,小弟是菜鳥,最好,用比較通俗的話說,最好不要直接百度copy 其他人的,最好是自己處理總結過的,因為,本人已經百度了很多次了。

PHPzPHPz2778 天前1142

全部回覆(2)我來回復

  • 大家讲道理

    大家讲道理2017-04-24 09:15:02

    是一種非關係型資料庫(NoSQL),是用C/C++寫的,redis的特徵:

    • 採用簡單資料或以鍵值索引的雜湊表,但也支援複雜操作,例如 ZREVRANGEBYSCORE。

    • INCR & co (適合計算極限值或統計數據)

    • 支援 sets(同時也支援 union/diff/inter)

    • 支援清單(同時也支援隊列;阻塞式 pop操作)

    • 支援雜湊表(帶有多個域的物件)

    • 支援排序 sets(高得分錶,適用於範圍查詢)

    • Redis支援事務

    • 支援將資料設定成過期資料(類似快速緩衝區設計)

    • Pub/Sub允許使用者實現訊息機制

    至於它有什麼用或怎麼用:
    通常局限點來說,Redis也以訊息佇列的形式存在,作為內嵌的List存在,滿足即時的高並發需求。而通常在一個電商類型的資料處理過程之中,有關商品,熱銷,推薦排序的隊列,通常存放在Redis之中,期間也包擴Storm對於Redis列表的讀取和更新。

    可以參考這篇文章:Redis應用程式場景

    回覆
    0
  • 黄舟

    黄舟2017-04-24 09:15:02

    redis是內存kv存儲,跟memcache有點類似,很多時候可以互換。一般用於資料庫前面加一層快取。
    例如簡單的members表,每次請求可能都要讀取members表,頻繁的讀取可以用redis來快取。

    row=redis->get("m_"..id)
    if not row then
        sql="select * from members where id='"..id.."'";
        row=sdo:fetch(sql);
        redis->set("m_"..id,row);
    end
    

    這個是基本的,也是用的最多的。
    redis還有佇列,例如一個請求記錄使用者的操作請求,用redis->lpush(op),從左加入佇列。一個後台服務可以從redis佇列讀取,op=redis->rpop(op),這個就可以完成簡單的先來先服務策略。
    另外redis也可以持久化,就是把記憶體的kv資料存到硬碟,斷電之後可以從記憶體載入。
    個人不建議使用redis持久化,關掉持久化,只用來做個cache。

    回覆
    0
  • 取消回覆