window 配置redis node 使用redis

1下载window 版

https://github.com/ServiceStack/redis-windows

2、运行

下载完后,解压找到32或64位版本解压。放到d盘下。

cmd 进到目录运行:

  1. redis-server.exe redis.conf 
window 版本下是redis.window.conf ,可以手动改成redis.conf

这个窗口要保持,关闭时redis服务会自动关闭。

3、测试

再开个cmd 运行:

redis-cli.exe
输入SET foo bar  //ok

KEYS* // foo

GET foo // bar

4、文件结构

  1. redis-benchmark.exe         #基准测试  
  2. redis-check-aof.exe         # aof  
  3. redis-check-dump.exe        # dump  
  4. redis-cli.exe               # 客户端  
  5. redis-server.exe            # 服务器  
  6. 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 a

lpush 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


发布了152 篇原创文章 · 获赞 4 · 访问量 18万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章