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