Redis操作命令大全(NodeJS版)

摘要:
语法:BLPOPkey[key…]timeout以下代码表示roban:demo:blpop队列被阻塞10秒。如果有数据,它将立即从左侧弹出。如果没有,它将继续阻止客户端blpop,直到10秒;BRpop块用于弹出队列数据。队列数据从数据末尾(右侧)弹出。当给定多个键参数时,按参数键的顺序检查每个列表,并弹出第一个非空列表的尾部元素。使用方法与BLPOP相同,但数据弹出方法不同。语法:BRPOPkey[key…]timeoutclientbrpop;SADD向集合键添加一个或多个成员元素。将忽略集合中已存在的成员元素。

/*——————————————————————————————

* 本文案例基于以下运行环境:

* 系统: CentOS 5.x

* NodeJS版本: 0.9 以上

* Redis版本: 2.8

* Redis-nodejs 扩展: 0.12.1 

/*——————————————————————————————

Part 1: 安装扩展

使用以下命令:

npm -g install redis

Redis实例:

Host: 127.0.0.1  Port: 6379

Part 2: 实例

var redis = require("redis"),
client = redis.createClient(6379,"127.0.0.1");

client.info(function(err,response){
        console.log(err,response);
});

//如果这个查询没有错误,err的值是null


创建REDIS连接

以下代码展示创建一个redis socket连接,并且查询redis服务器信息,也就是 redis-cli INFO 命令

var redis = require("redis");
var client = redis.createClient(6379,'127.0.0.1');

client.info(function(err,response){
        console.log(err,response);
});

上面代码延伸出的一些问题:

1. 如果服务器没有连接上,会怎样?

2. 如果连接超时,怎么处理?

对于以上问题,我们需要对代码进行一些修改,以便更好地进行错误处理,这将是一个好的变成习惯.

createClient(port,host,options) 
这个函数接受三个参数,第一个是连接端口,第二个是主机IP/名称,第三个参数则是配置项,KEY=>VALUE形式

例如:
var client = redis.createClient(63719,'127.0.0.1',{connect_timeout:1}); //增加超时选项

错误处理:
Nodejs 错误处理机制有2种,1种是同步操作时可以使用 try ... catch ..来捕获错误,
另外一种就是事件了, redisClient 有一个error 的事件,当出错的时候变回emmit 这个事件,使用方法:

client.on('error',function(error){
        console.log(error);
});

Set

client.set(key,value,callback),callback 函数有2个回调参数,error和response, error表示操作过程中的错误提示值为null表示没有错误,response为布尔值
client.set("Roban","lee",function(err,response){
console.log(err,response);
});

Get

client.get(key,callback),callback 函数有2个回调参数,error和response, error表示操作过程中的错误提示值为null表示没有错误,response为获取到的值,null表示没有获取到数据
client.get("Roban",function(err,response){
console.log(err,response); //will print lee
});


Hset

client.hset(hashkey,field,value,callback) 哈希数据类型, 第一个参数为KEY名称,第二个为需要设置的字段KEY,第三个为值,第四个参数为回调参数,内容和set一致
client.hset("roban:demo:hset","today","fine",function(err,response){
console.log(err,response);
});


Hmset

client.hmset(hashkey,field,value,field,value ….. callback) 哈希数据类型, 第一个参数为KEY名称,后面的参数为不固定参数,数据格式是 key,value ,key, value 
client.hset("roban:demo:hset","lastday","notgood","nextday","willbefine",function(err,response){
console.log(err,response);
});


Hget

client.hget(hashkey,field,callback) 获取hash数据中的某一个字段值
client.hset("roban:demo:hset","today",function(err,response){
console.log(err,response);
});

Hgetall

client.hgetall(hashkey,callback) 获取hash数据种所有的数据,包括字段与值
client.hset("roban:demo:hset",function(err,response){
console.log(err,response);
});

BLpop

阻塞式弹出队列数据,从数据顶部(左侧)弹出,当 BLPOP 被调用时,如果给定 key 内至少有一个非空列表,那么弹出遇到的第一个非空列表的头元素,并和被弹出元素所属的列表的名字一起,组成结果返回给调用者。当存在多个给定 key 时, BLPOP 按给定 key 参数排列的先后顺序,依次检查各个列表。
语法:
BLPOP key [key ...] timeout

以下代码表示,阻塞roban:demo:blpop这个队列10秒钟,如果有数据,立刻从左侧弹出,如果没有,持续阻塞,直到10秒

client.blpop("roban:demo:blpop",10,function(err,response){
console.log(err,response);
});

BRpop

阻塞式弹出队列数据,从数据尾部(右侧)弹出,当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的尾部元素。使用方法同 BLPOP一致,只是数据弹出的方式不一样 
语法:
BRPOP key [key ...] timeout

client.brpop("roban:demo:blpop",10,function(err,response){
console.log(err,response);
});

SADD


将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
假如 key 不存在,则创建一个只包含 member 元素作成员的集合。
当 key 不是集合类型时,返回一个错误。

语法:
SADD key member [member ...]

client.sadd("roban:demo:sdemo",hello,this,fuck,world,function(err,response){
console.log(err,response);
});

SCARD


返回集合 key 的基数(集合中元素的数量)。

语法:
SCARD key

client.scard("roban:demo:sdemo",function(err,response){
console.log("Number of key roban:demo:sdemo is:" + response);
});

SPOP


移除并返回集合中的一个随机元素。

如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER 命令。

语法:
SPOP key

client.spop("roban:demo:sdemo",function(err,response){
console.log("Poped value of key roban:demo:sdemo is:" + response);
});

SRANDMEMBER


如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素。
从 Redis 2.6 版本开始, SRANDMEMBER 命令接受可选的 count 参数:
1. 如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。

2. 如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
该操作和 SPOP 相似,但 SPOP 将随机元素从集合中移除并返回,而 SRANDMEMBER 则仅仅返回随机元素,而不对集合进行任何改动。

语法:
SRANDMEMBER key [count]

client.srandmember("roban:demo:sdemo",function(err,response){
console.log("Poped value of key roban:demo:sdemo is:" + response);
});

免责声明:文章转载自《Redis操作命令大全(NodeJS版)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[ext4]03 磁盘布局 – Flexible group分析大数据之Zookeeper集群搭建下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

node:json与csv互转

【单个文件的转化】   1.安装json2csv模块将json转成csv   jsonToCSV.js var fs = require('fs'); const Json2csvParser = require('json2csv').Parser; const fields = ['car', 'price', 'color', 'for']; le...

Spring整合Redis

Oracle:  存储数据,   使用SQL操作数据库   Java 程序作为客户端, 发送sql, 操作数据库:  jdbc Redis: key/value 内存式数据库,  存储数据,   redis: 存储热点数据   Java程序作为客户端,  jedis 使用Spring-data-redis+jedis操作redis   与Spring整合,...

Redis主从配置及主从切换

环境及部署图 本次配置在同一台主机配置文件及端口号不一样 6379配置文件/etc/redis/6379.conf bind 0.0.0.0 protected-mode yes port 6379 tcp-backlog 511 timeout 0 tcp-keepalive 300 daemonize yes supervised n...

springboot2.1.3 + redisTemplate + Lock 操作 redis 3.0.5

近期在整合springboot + redis 的功能,本来想用原生的jedit api,最后想想有点 low,搜了一把,boot已经提供给我们操作的方法,那就是 使用 redisTemplate 或 StringRedisTemplate, 两者是有区别的,可以看下面的说明 1. 两者的关系是StringRedisTemplate继承RedisTempl...

HttpServletrequest 注册和登录、request域对象、web动态shop

 summarize httpServletResponse跟 Request一个是响应一个是请求,获得客户端请求方式 用getMethod 得到的是String类型, response:属于重定向请求、地址栏URL会发生改变、想服务器发送两次请求 response解决中文乱码:response.setContentType("text/html;char...

转载--redis密码管理

源地址:http://blog.csdn.net/lxpbs8851/article/details/8136126 ps -ef 查看正在活动的进程 ps -ef |grep abc 查看含有"abc"的活动进程 ps -ef |grep -v abc 查看不含abc的活动进程 一.如何初始化redis的密码? 总共2个步骤: a.在配置文件中有个参数:...