nodejs redis的使用

安装 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,如果有报错,
第二个参数的返回结果和在终端执行的返回结果是一致的,不管是设置类的操作,还是获取数据的操作

2560633-59cb4ba69aadefb6.png
设置了密码,但是没有验证的报错
2560633-97a70b28e7d88046.png
以上四种处理的打印结果

-如果有报错,回掉的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()
    })
2560633-f0bfaafae6dbd06b.png
如果有报错,回掉的err参数会直接打印报错
  • 如果设置了密码,进入命令行终端也是需要密码的,否则虽然进入了终端,但是你不能进行任何操作


    2560633-42ab3db9fc1a25b4.png
    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 后端的

猜你喜欢

转载自blog.csdn.net/weixin_33733810/article/details/86822930
今日推荐