redis配置
# 安装

在这个地址里下载redis的压缩文件[github下载地址](https://github.com/MicrosoftArchive/redis/releases)解压到`C:\redis`目录下

![image](https://user-images.githubusercontent.com/17243165/36776265-27ce3d80-1ca0-11e8-8c17-513bf9b3343a.png)

# 运行

在`C:\redis`该目录下打开**cmd**命令执行一下命令启动redis服务
```bash
redis-server.exe redis.windows.conf
```
![image](https://user-images.githubusercontent.com/17243165/36776346-6ca5edae-1ca0-11e8-8bb5-13f8a6bf7814.png)

# 测试

这时候另启一个cmd窗口，原来的不要关闭，不然就无法访问服务端了，切换到redis目录下运行一下命令
```bash
redis-cli.exe -h 127.0.0.1 -p 6379
```
设置键值对
```bash
set myKey abc
```
取出键值对
```bash
get myKey
```
![image](https://user-images.githubusercontent.com/17243165/36776577-41fb94e0-1ca1-11e8-9595-bfc6e18e4d52.png)

# 配置node_redis

安装redis模块
```bash
npm install redis
```
配置和连接
```js
var redis = require("redis");
var client = redis.createClient();//默认localhost和6379端口
//相当于var client  = redis.createClient('6379', '127.0.0.1');
//监听错误
client.on("error", function(err) {
	console.log("Error " + err);
});
```

# 设置

|方法|作用|
|-|-|
|`client.hmset("key",obj,function(err) {}`|为一个Key一次设置多个哈希键/值，多用于JSON对象的写入|
|`client.hgetall("key",function(err, object) {})`|读取一个Key的所有哈希键/值，多用于JSON对象读取|

读写JSON的例子
```js
//写入JavaScript(JSON)对象
client.hmset('sessionid', {
	username: 'wscats',
	password: 'password'
}, function(err) {
	console.log("错误", err)
})

//读取JavaScript(JSON)对象
client.hgetall('sessionid', function(err, object) {
	console.log(object)
})
```

# 时效性

30s后`sessionid`将自动删除
```js
client.expire('sessionid', 30);
```
这里如果要写定时清理数据，有两个比较有用的时间计算[js 取得当天0点 / 23:59:59 时间](https://www.cnblogs.com/xiangsj/p/7977325.html)

# 可视化
可以安装redis可视化工具方便管理redis数据库
![image](https://user-images.githubusercontent.com/17243165/36779598-7de9b694-1cab-11e8-86fd-661202175884.png)

- [Redis Desktop Manager下载地址](https://redisdesktop.com/download)
- [RedisDesktopManager的github地址](https://github.com/uglide/RedisDesktopManager)

# 参考文章

- [菜鸟教程-redis安装](http://www.runoob.com/redis/redis-install.html)
- [在nodejs中使用Redis缓存和查询数据及Session持久化(Express)](http://ourjs.com/detail/54b72644232227083e00000a)
- [在NodeJS中使用Redis缓存数据](https://www.cnblogs.com/BlueKevin/p/5457788.html)
- [Gearman + Nodejs + MySQL UDF异步实现 MySQL 到 Redis 的数据同步](https://www.cnblogs.com/java-koma/p/4280769.html)