window 配置redisnode 使用redis

    xiaoxiao2025-08-05  19

    1下载window 版

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

    2、运行

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

    cmd 进到目录运行:

    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、文件结构

    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 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

    转载请注明原文地址: https://ju.6miu.com/read-1301415.html
    最新回复(0)