查询资料才发现:Node Redis版本V4之后,连接语法变了。
Starting from v4 of node-redis library, you need to call client.connect() after initializing a client. See this migration guide.
新语法:
const redis = require('redis')
const client = redis.createClient({ socket: { port: 6379 } })
client.connect()
client.on('connect', () =>{
console.log('connected')
})
You might also want to consider running the client connect method with await in an asynchronous function. So you don't have to worry about event listeners.
const redis = require('redis')
(async () =>{
try {
const client = redis.createClient({ socket: { port: 6379 } })
await client.connect()
console.log('connected')
} catch (err) {
console.error(err)
}
})()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Example]:
const redis = require("redis")
(async () =>{
try {
const client = redis.createClient({
socket: { port: 6379 },
legacyMode: true,
})
await client.connect()
console.log("connected")
await client.v4.set("key4", "value2", {
NX: true,
})
client.set("key3", "value3", "NX", (err, reply) =>{})
await client.get("key4", function (err, v) {
console.log("redis get hello err,v", err, v)
})
client.set("student1", "Laylaa1", function (err, reply) {
if (err) {
console.log(err)
callback(err, null)
return
}
console.log(reply)
})
} catch (err) {
console.error(err)
}
})()
安装node.js、mysql,此处略(自行搜索吧)…;2、创建一个名为test的数据库,然后建一张名为user_info的表(仅供测试)…
这里假定mysql使用的用户名为root,密码为123456
相应的mysql如下:
复制代码 代码如下:
在开始本文之前请确保安装好Redis
和
Node.js
以及
Node.js
的
Redis
扩展
——
node_redis
首先创建一个新文件夹并新建文本文件
app.js
文件内容如下:
var
redis
=
require("redis")
,
client
=
redis.createClient()
client.on("error",
function
(err)
{
console.log("Error
"
+
err)
})
client.on("connect",
runSample)
function
runSample()
{
//
Set
a
value
client.set("string
key",
"Hello
World",
function
(err,
reply)
{
console.log(reply.toString())
})
//
Get
a
value
client.get("string
key",
function
(err,
reply)
{
console.log(reply.toString())
})
}
当连接到
Redis
后会调用
runSample
函数并设置一个值,紧接着便读出该值,运行的结果如下:
OK
Hello
World
我们也可以使用
EXPIRE
命令来设置对象的失效时间,代码如下:
var
redis
=
require('redis')
,
client
=
redis.createClient()
client.on('error',
function
(err)
{
console.log('Error
'
+
err)
})
client.on('connect',
runSample)
function
runSample()
{
//
Set
a
value
with
an
expiration
client.set('string
key',
'Hello
World',
redis.print)
//
Expire
in
3
seconds
client.expire('string
key',
3)
//
This
timer
is
only
to
demo
the
TTL
//
Runs
every
second
until
the
timeout
//
occurs
on
the
value
var
myTimer
=
setInterval(function()
{
client.get('string
key',
function
(err,
reply)
{
if(reply)
{
console.log('I
live:
'
+
reply.toString())
}
else
{
clearTimeout(myTimer)
console.log('I
expired')
client.quit()
}
})
},
1000)
}
注意:
上述使用的定时器只是为了演示
EXPIRE
命令,你必须在
Node.js
项目中谨慎使用定时器。
运行上述程序的输出结果是:
Reply:
OK
I
live:
Hello
World
I
live:
Hello
World
I
live:
Hello
World
I
expired
接下来我们检查一个值在失效之前存留了多长时间:
var
redis
=
require('redis')
,
client
=
redis.createClient()
client.on('error',
function
(err)
{
console.log('Error
'
+
err)
})
client.on('connect',
runSample)
function
runSample()
{
//
Set
a
value
client.set('string
key',
'Hello
World',
redis.print)
//
Expire
in
3
seconds
client.expire('string
key',
3)
//
This
timer
is
only
to
demo
the
TTL
//
Runs
every
second
until
the
timeout
//
occurs
on
the
value
var
myTimer
=
setInterval(function()
{
client.get('string
key',
function
(err,
reply)
{
if(reply)
{
console.log('I
live:
'
+
reply.toString())
client.ttl('string
key',
writeTTL)
}
else
{
clearTimeout(myTimer)
console.log('I
expired')
client.quit()
}
})
},
1000)
}
function
writeTTL(err,
data)
{
console.log('I
live
for
this
long
yet:
'
+
data)
}
运行结果:
Reply:
OK
I
live:
Hello
World
I
live
for
this
long
yet:
2
I
live:
Hello
World
I
live
for
this
long
yet:
1
I
live:
Hello
World
I
live
for
this
long
yet:
0
I
expired
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)