Redis瞭解一下

最近一直在忙活後臺,系統是Koa+MySql+Redis。redis

以前不多接觸Redis,如今簡單認識和總結一下:數據庫

一、什麼是Redisnpm

Redis全稱爲:Remote Dictionary Server(遠程數據服務),是一個key-value存儲系統。服務器

二、特色:ui

1)讀寫效率高this

Redis之內存做爲數據存儲介質,因此讀寫數據的效率極高,遠遠超過數據庫。以設置和獲取一個256字節字符串爲例,它的讀取速度可高達110000次/s,寫速度高達81000次/s。spa

2)存儲特性code

儲存在Redis中的數據是持久化的,斷電或重啓後,數據也不會丟失。由於Redis的存儲分爲內存存儲、磁盤存儲和log文件三部分,重啓後,Redis能夠從磁盤從新將數據加載到內存中,這些能夠經過配置文件對其進行配置,正由於這樣,Redis才能實現持久化。blog

三、用法內存

在Node環境中實現增刪查

module.exports = new (function () {
    var self = this;
    var redis = require("redis");
    var client = null;
    this.init = function (host, port) {
        client = redis.createClient(port || 6379, host || '127.0.0.1', {});
    };
    this.getCache = function (key, call) {
        !client && (self.init());
        return new Promise(function (res, rej) {
            call = call || res;
            client.get(key, function (err, v) {
                if (v) {
                    if (v.indexOf('obj-') === 0) {
                        v = v.slice(4);
                        call(JSON.parse(v));
                    } else if (v.indexOf('str-') === 0) {
                        call(v.slice(4));
                    } else {
                        call(v);
                    }
                } else {
                    call();
                }
            });
        });
    };
    this.setCache = function (key, value, expire) {
        !client && (self.init());
        var v = value;
        if (typeof value == 'object') {
            v = JSON.stringify(value);
            v = 'obj-' + v;
        } else {
            v = 'str-' + v;
        }
        client.set(key, v);
        client.expire(key, expire || 72000 * 60 * 1000);
    };
    this.clearCache = function (keys) {
        !client && (self.init());
        for (var i = 0; i < keys.length; i++) {
            client.del(keys[i]);
        }
    };
})();

要先npm一下redis哦

四、場景應用

由於Redis交換數據快,因此在服務器中經常使用來存儲一些須要頻繁調取的數據,這樣能夠大大節省系統直接讀取磁盤來得到數據的I/O開銷,更重要的是能夠極大提高速度。

能夠實現時間調度,好比在一些訂單有明確時效的場景中應用。

相關文章
相關標籤/搜索