最近一直在忙活后台,系统是Koa+MySql+Redis。
之前很少接触Redis,现在简单认识和总结一下:
1、什么是Redis
Redis全称为:Remote Dictionary Server(远程数据服务),是一个key-value存储系统。
2、特点:
1)读写效率高
Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。以设置和获取一个256字节字符串为例,它的读取速度可高达110000次/s,写速度高达81000次/s。
2)存储特性
储存在Redis中的数据是持久化的,断电或重启后,数据也不会丢失。因为Redis的存储分为内存存储、磁盘存储和log文件三部分,重启后,Redis可以从磁盘重新将数据加载到内存中,这些可以通过配置文件对其进行配置,正因为这样,Redis才能实现持久化。
3、用法
在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哦
4、场景应用
因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。
可以实现时间调度,比如在一些订单有明确时效的场景中应用。