最近一直在忙活後臺,系統是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開銷,更重要的是能夠極大提高速度。
能夠實現時間調度,好比在一些訂單有明確時效的場景中應用。