1下载window 版
https://github.com/ServiceStack/redis-windows
2、运行
下载完后,解压找到32或64位版本解压。放到d盘下。
cmd 进到目录运行:
- redis-server.exe redis.conf
这个窗口要保持,关闭时redis服务会自动关闭。
3、测试
再开个cmd 运行:
redis-cli.exe
输入SET foo bar //ok
KEYS* // foo
GET foo // bar
4、文件结构
- redis-benchmark.exe #基准测试
- redis-check-aof.exe # aof
- redis-check-dump.exe # dump
- redis-cli.exe # 客户端
- redis-server.exe # 服务器
- redis.windows.conf # 配置文件
5、连接redis 服务器
使用redis自带的命令,能够连接服务器。
redis-cli -h localhost -p 6379 -a 身份验证 也就是密码
6、mis安装redis
从https://github.com/MSOpenTech/redis/releases
下载mis 文件安装。安装时会提示添加到环境变量path。
当用redis-cli -v 查看没找到时,需要手动添加变量了。
成功后环境变量里会有C:\Program Files\Redis\
用命令 redis-cli -v //查看版本 redis-cli 3.2.100
redis-cli //进入命令输出
set name cc //ok
get name //"cc"
运行
redis-server.exe redis.windows.conf
会提示未找到 conf 需要进到c盘下安装的目录再运行。
意见用安装的方式。
7、redis 可视化工作
https://redisdesktop.com/download
国内下载地址http://download.csdn.net/download/li295214001/9398955
有window mac linux 版本。
下载后安装,创建连接,填写 ip host auth身份验证也就是密码 等即可。
8、链接服务器
redis-cli -h host -p port -a password
在链接服务器redis时需要密码,也就是客户端配置时的auth 身份验证 redis-cli 链接时用-a auth(password)
9、redis 数据类型
支持5种类型:
1)字符串
set key value //set name 'star'
get name// star
2)哈希值
Redis的哈希值是字符串字段和字符串值之间的映射,所以他们是表示对象的完美数据类型
在Redis中的哈希值,可存储超过400十亿键值对。
hmset key value value ...hgetall key
hmset 哈希名 key value
哈希用工具看到有个row key value 三列
3)列表
Redis列表是简单的字符串列表,排序插入顺序。您可以在头部或列表的尾部Redis的列表添加元素。
列表的最大长度为232 - 1 (每个列表超过4十亿元素4294967295)元素。
lpush list alpush list b
lrange list // b a
列表用工具看到row value
4)集合sadd
Redis集合是字符串的无序集合。在Redis中可以添加,删除和测试文件是否存在在O(1)的时间复杂度的成员。
sadd 集合名 value //添加
smembers 集合名 //查看
集合用工具看是row value
集合排序
Redis的集合排序类似于Redis集合,字符串不重复的集合。不同的是,一个有序集合的每个成员关联分数,用于以便采取有序set命令,从最小的到最大的分数有关。虽然成员都是独一无二的,分数可能会重复。
5)有序集合
在集合上加了一个score 分数值 。
Redis有序集合类似Redis集合存储在设定值唯一性。不同的是,一个有序集合的每个成员带有分数,用于以便采取有序set命令,从最小的到最大的分数有关。
zadd 集合名 分数值 (score) value
zrange 集合名 0 10 //查询 0到10的数据
有序集合用工具看是row value score
10、node redis 用法
// redis 链接
var redis = require('redis');
var client = redis.createClient('6379', '127.0.0.1',{db:0,password:""}); //链接服务器时需设置password
// redis 链接错误
client.on("error", function(error) {
console.log(error);
});
// redis 密码 (reids.conf未开启验证,此项可不需要)
//client.auth("foobared");
//选择数据库,如0 默认链接的是第0个。可以不用select 。直接 client.set
client.select('0', function(error){
if(error) {
console.log(error);
} else {
// set
client.set('str_key_0', '0', function(error, res) {
if(error) {
console.log(error);
} else {
console.log(res);
}
// 关闭链接
client.end();
});
}
});
client.on('connect',function(){
//-----------键使用
//set 写法
client.set('name','star',redis.print)//reply:OK
//设置name 过期时间
client.expire('name',3)//3s
client.set('age','25',function(err,reply){
if(err){
console.log(err);
}else{
console.log(reply.toString())//Ok
}
})
//获取
client.get('name',function(err,reply){
console.log('name:',reply.toString())//star
client.quit();
})
//------哈希表
client.hset("hese1", "hashtest 1", "some value", redis.print);
client.hset(["hese1", "hashtest 2", "some other value"], redis.print);
client.hkeys("hese1", function (err, replies) {
console.log(replies.length + " replies:");
replies.forEach(function (reply, i) {
console.log(" " + i + ": " + reply);
});
client.quit();
});
client.hget("hese1","hashtest 1",redis.print);
//-----为一个Key一次设置多个哈希键/值, 多用于JSON对象的写入(序列化的SESSION)。
client.hmset('session_1',{username:'star',pwd:'123'},function(err,reply){
console.log(err,reply);
})
client.hgetall('session_1',function(err,reply){
console.log(reply)
})
})
11、express 中使用redis 持久化session
参考:http://www.open-open.com/lib/view/open1421307039328.html
var session = require('express-session');
var RedisStore = require('connect-redis')(session);
app.use(cookieParser());
// 设置 Session
app.use(session({
store: new RedisStore({
host: "127.0.0.1",
port: 6379,
db: 0,password""
}),
resave:false,
saveUninitialized:false,
secret: 'keyboard cat'
}))
使用的版本:
express 4.13.4 express-session 1.14.0 connect-redis 3.1.0
在配置时db 设置的是序号而不是名称。
如redis服务器有密码需要配置assword
使用redis 保存session好处
部署时用nginx 来均衡压力,分配请求到多个node 服务上。这时会遇到session的问题,
比如我在8008 node 服务上登录了,第二次访问了8009 node 服务,这时登录状态就不在了。
如果有backup 备用服务也一样。所以用redis 来持久化session。
这样多个node 服务session 共用redis。
express的写法,还是和以前一样req.session.user=XX 即可。
参考:
http://www.yiibai.com/redis/redis_quick_guide.html