美文网首页
nodejs redis的使用

nodejs redis的使用

作者: 云龙789 | 来源:发表于2019-02-01 12:48 被阅读6次

    安装 redis

    npm install redis
    

    我在暗转过的时候遇到了点问题,我的redis 组件中只有一个package.json 文件,没有相应的文件包
    我没有很好的找到解决资料,不过我尝试了把项目组件中的 node_modules/redis 删除,然后再重新安装,发现可以了

    • redis 配置文件
    linux  中
    /etc/redis/redis.conf
    
    大概500行有修改密码的配置  当然,你也可以不修改密码  默认是没有密码的
    # requirepass foobared
    

    修改配置后重启 redis

    sudo /etc/init.d/redis-server restart
    
    • 在 nodejs 中使用 redis
    var redis = require('redis');
    var client = redis.createClient(6379, '127.0.0.1');
    client.auth(123456);  // 如果没有设置密码 是不需要这一步的
    client.on('connect', function () {
        // set 语法
        client.set('name', 'long', function (err, data) {
            console.log(data)
        })
       // get 语法
        client.get('name', function (err, data) {
            console.log(data)
        })
    
        client.lpush('class',1,function (err,data) {
            console.log(data)
        })
    
        client.lrange('class',0,-1,function (err,data) {
            console.log(data)
        })
    })
    
    • 语法使用总结

    nodejs 中的 redis 其实跟正常的终端使用redis 是一样的,只是他的结果值都是在一个回掉函数中。
    回掉函数的第一个参数是报错参数,第二个参数是返回的结果
    如果没有报错, err 一般都是返回 null,如果有报错,
    第二个参数的返回结果和在终端执行的返回结果是一致的,不管是设置类的操作,还是获取数据的操作

    设置了密码,但是没有验证的报错 以上四种处理的打印结果

    -如果有报错,回掉的err参数会直接打印报错

     // set 语法
        client.set('name', 'long',1, function (err, data) {
            console.log(err)
            console.log(data)
        })
        client.hset('hset','name',function (err,data) {
            console.log(err)
            console.log()
        })
    
    如果有报错,回掉的err参数会直接打印报错
    • 如果设置了密码,进入命令行终端也是需要密码的,否则虽然进入了终端,但是你不能进行任何操作


      redis进入终端
    • redis 携带密码进入终端指令

    redis-cli -h 127.0.0.1 -p 6379 -a 123456
    解释  -h IP地址 -p 端口号 -a 密码
    
    • 还可以在终端设置查看密码
    127.0.0.1:6379> config set requirepass newPassword
    OK
    127.0.0.1:6379> config get requirepass
    1) "requirepass"
    2) "newPassword"
    

    注意

    利用 redis 获取数据后,获取到的数据是不能做为返回值返回的。因为数据实在一个回掉函数 function(err,data) 中获取到的 data 数据。但是这个 function 是无法返回的,我也没有找到这方面的资料,怎么返回回掉函数中的值。不过我又想,在 nodejs 中的redis数据既然这么设计,肯定还是与 nodejs 有关。因为 nodejs 是事件驱动的,而不是使用函数调用的方式,所以,我觉得可以把获取数据作为一个事件驱动,驱动去 做事,而不是获取数据。不知道我的理解对不对

    那么,获取 redis 的数据怎么办呢?应该在后端(比如PHP)写一个接口,供前端调用。这样就正常了,接口的名字可以是类似于 redisHget(key){} 等等

    如果你获取数据后,要做其他的处理,比如使用 socket 通道发送打某个个人或者用户,这种情况是适合写在nodejs 后端的

    相关文章

      网友评论

          本文标题:nodejs redis的使用

          本文链接:https://www.haomeiwen.com/subject/pqxdsqtx.html