转载请注明出处:redis在nodejs中的应用redis是一个内存数据库,性能非常好。它作为缓存数据库部署在应用程序和mysql数据之间,可以大大提高应用程序的性能,这里简单介绍一下nodejs客户端操作redis的demo程序redis一共可以存储5种数据类型,分别是字符串,列表,集合,散列,有序集合;这里将五种数据类型一一增删查改;1、mac上redis的安装https://redis.io/download,目前我用的稳定版是4.0.9,解压后进入redis-4.0.9目录,执行make&&sudomakeinstall,等一个安装完成需要几分钟;2、redis服务器启动命令行,执行redis-server启动。默认端口为6379;3、安装redis-node客户端,创建redis-node目录。在该目录下yarninit-y后执行命令:yarnaddredis安装nodejs的redis客户端,参考文档:https://github.com/NodeRedis/...4.在redis-node目录下,terminal在终端上执行node,在终端响应式的执行nodejs代码进行测试。要启动演示程序,首先要创建一个客户端并连接到redis服务器。在执行以下代码连接客户端之前,确保redis已经运行服务器:在终端执行redis-server,默认端口为6379;constredis=require('redis');constclient=redis.createClient();//默认连接localhost:6379,具体配置参数可以参考文档https://github.com/NodeRedis/node_redis如果一切顺利,我们就创建了一个连接redis服务器的客户端,进行后续操作在客户端对象上。1、字符串类型虽然是字符串类型,但是可以存储的数据包括字符串、整数、浮点数。varres=client.set('name','abczhijia',(err,data)=>{console.log('err:',err,'data:',data);});//err:nulldata:OK,res的值为trueclient.get('name',(err,data)=>{console.log('err:',err,'data:',data);});//err:nulldata:abczhijia为了简单起见,我们定义一个输出数据的回调函数:constcb=(err,data)=>{console.log('err:',err,'data:',data,'datatype:',typeofdata);}接下来,对整数进行测试:client.set('age',20,cb);//err:nulldata:OK数据类型:stringclient.get('age',cb);//err:nulldata:20datatype:string可以看出虽然设置的是一个整数,但是输出来的时候其实是一个字符串,所以如果要计算,需要在回调函数自己。2.列表数据类型//从右侧推送client.rpush('friends','mike','jhon',cb);//错误:空数据:2数据类型:numberclient.lrange('friends',0,-1,cb);//err:nulldata:['mike','jhon']datatype:object//从左推到client.lpush('friends','sam','bob',cb);//错误:空数据:4数据类型:numberclient.lrange('friends',0,-1,cb);//错误:空数据:['bob','sam','mike','jhon']datatype:object//popupfromtherightclient.rpop('friends',cb);//err:nulldata:jhondatatype:string//从左边弹出client.lpop('friends',cb);//err:nulldata:bobdatatype:string//打印看看发生了什么client.lrange('friends',0,-1,cb);//err:nulldata:['sam','mike']datatype:object//查看索引位置的值client.lindex('friends',0,cb);//err:nulldata:samdatatype:string//切列表client.rpush('friends','tom','bryant',cb)//err:nulldata:4datatype:numberclient.ltrim('朋友',1,2,cb);//err:nulldata:OK数据类型:stringclient.lrange('friends',0,-1,cb);//err:nulldata:['mike','tom']datatype:object这里注意,list的操作可以从右边的rpush推入一条或多条数据,也可以从左边的lpush推入一条或多条数据;另外,在获取值的时候,需要指定起始位置和结束位置,如果要获取整体,可以把结束位置写成-13.集合数据类型//在集合ids中添加几个元素client.sadd('ids',1,2,cb);//err:nulldata:2datatype:number//查看集合元素client.smembers('ids',cb);//err:nulldata:['1','2']datatype:object//从集合中删除元素client.srem('ids',2,cb);//err:nulldata:1datatype:number//看看发生了什么client.smembers('ids',cb);//err:nulldata:['1']datatype:object//看集合有多少个元素client.scard('ids',cb);//err:nulldata:1datatype:number//多加几个元素进入client.sadd('ids',3,5,8,9);////判断元素是否在集合中client.sismember('ids',8,cb);//错误:空数据:1数据类型:numberclient.sismember('ids',80,cb);//err:nulldata:0datatype:number4.Hash数据类型//将多组键值对添加到hash中client.hmset('phone','price',5888,'name','iphonex',cb);//err:nulldata:OKdatatype:string//查看多个key的值client.hmget('phone','price','name',cb);//err:nulldata:['5888','iphonex']datatype:object//查询键值对的个数client.hlen('phone',cb);//err:nulldata:2datatype:number//删除其中一个key值对client.hdel('phone','price',cb);//err:nulldata:1datatype:number//检查价格是否还在?client.hmget('电话','价格',cb);//err:nulldata:[null]datatype:object,原来只剩下null//多加几个属性client.hmset('phone','vendor','apple','madein','china',cb);//获取所有键值对client.hgetall('phone',cb);//err:nulldata:{name:'iphonex',vendor:'apple',madein:'china'}datatype:object//检索所有键client.hkeys('phone',cb);//err:nulldata:['name','vendor','madein']datatype:object//获取所有的值client.hvals('phone',cb);//err:nulldata:['iphonex','apple','china']datatype:object//判断key是否存在client.hexists('phone','name',cb);//错误:空数据:1数据类型:numberclient.hexists('phone','price',cb);//err:nulldata:0datatype:number5.有序集合数据类型有序集合稍微复杂一点,但是可以达到很好的应用效果,待续。。。如有错误,请留言留言指正,谢谢,代码在我的github账号:https://github.com/abczhijia/...参考:https://github.com/NodeRedis/...《redis实战》
