Node.jsRedis操作说明Node.js Redis
基本功能:
缓存系统
数据存储
消息中介
基本⼯具
安装redis驱动
$ npm install redis
连接redis代码
var redis =require('redis');
var client = ateClient(6379,'localhost');
client.set('hello','This is a value');
代码改造⼀下,利⽤程序获取redis中的值
var redis =require('redis');
var client = ateClient(6379,'localhost');
client.set('hello','This is a value');
<('hello',function(err,v){
console.log("redis get hello err,v",err,v);
})
假设我们把存储对象改成JSON对象,将会发⽣什么样的结果呢?
var redis =require('redis');
var client = ateClient(6379,'localhost');
client.set('hello',{name:"jacky",age:22});
<('hello',function(err,v){
console.log("redis get hello err,v",err,v);
})
程序将会报错,因为redis中存储的是字符串对象
我们需要重写toString⽅法
String=function(){
return JSON.stringify(this);
};
//#输出正常
列表 - List
为了⽅便,把连接redis的代码写成模块的⽅式
var redis =require('redis');
其实操作list就是操作双向链表
var client =require('./client');
//先清除数据
client.del('testLists');
client.rpush('testLists','a');
client.rpush('testLists','b');
client.rpush('testLists','c');
client.rpush('testLists','d');
client.rpush('testLists','e');
client.rpush('testLists','1');
client.lpop('testLists',function(err,v){
console.log('client.lpop , err , v : ', err,v);
})
client.rpop('testLists',function(err,v){
console.log('client.rpop , err, v ',err,v);
})
client.lrange('testLists',0.,-1,function(err,lists){
console.log('client.lrange , err ,lists: ',err,lists);
})
集合 - Set
var client =require('./client');
client.sadd('testSet',1);
client.sadd('testSet','a');
client.sadd('testSet','bb');
//不可重复
client.sadd('testSet','bb');
client.smembers('testSet',function(err, v){
console.log('client.smembers err, v:', err, v);
});
//⽆序不可重复
消息中介
就是redis中的发布订阅
订阅⽅ sub.js
var client =require('./client');
client.subscribe('testPublish');
<('message',function(channel, msg){
console.log(' message, channel:', channel,' message:', msg); });
发布⽅ pub.js
var client =require('./client');
client.publish('testPublish','message from pub.js');
先启动订阅⽅,然后启动发布⽅便可看见现象
NodeJS 相关 redis api
redis数据类型命令汇总
string 字符串
命令⾏为返回值使⽤⽰例(略去回调函数)
set设置存储在给定键中的值OK set('key','value')
get获取存储在给定键中的值 value/null get('key')
del 删除存储在给定键中的值(任意类型)1/0del('key')
incrby 将键存储的值加上整数increment incrby('key', increment)
decrby 将键存储的值减去整数increment decrby('key', increment)
incrbyfloat 将键存储的值加上浮点数increment incrbyfloat('key', increment)
append 将值value追加到给定键当前存储值的末尾append('key','new-value')
getrange 获取指定键的index范围内的所有字符组成的⼦串getrange('key','start-index','end-index')
setrange 将指定键值从指定偏移量开始的⼦串设为指定值setrange('key','offset','new-string')
list 列表
命令⾏为返回值使⽤⽰例(略去回调函数)
rpush 将给定值推⼊列表的右端当前列表长度rpush('key','value1'[,'value2'])(⽀持数组赋值)
lrange 获取列表在给定范围上的所有值 array lrange('key',0,-1)(返回所有值)
lindex 获取列表在给定位置上的单个元素lindex('key',1)
js获取json的key和valuelpop 从列表左端弹出⼀个值,并返回被弹出的值lpop('key')
rpop 从列表右端弹出⼀个值,并返回被弹出的值rpop('key')
ltrim 将列表按指定的index范围裁减ltrim('key','start','end')
set 集合
命令⾏为返回值使⽤⽰例(略去回调函数) sadd 将给定元素添加到集合插⼊元素数量sadd('key','value1'[,'value2',...])(不⽀持数组赋值)(元素不允许重复)
smembers 返回集合中包含的所有元素array(⽆序)smembers('key')
sismenber 检查给定的元素是否存在于集合中1/0sismenber('key','value')
srem 如果给定的元素在集合中,则移除此元素1/0srem('key','value')
scad 返回集合包含的元素的数量sacd('key')
spop 随机地移除集合中的⼀个元素,并返回此元素spop('key')
smove 集合元素的迁移smove('source-key'dest-key', 'item')
sdiff 返回那些存在于第⼀个集合,但不存在于其他集合的元素(差集)sdiff('key1','key2'[,'key3',...])
sdiffstore 将sdiff操作的结果存储到指定的键中sdiffstore('dest-key','key1','key2'[,'])
sinter 返回那些同事存在于所有集合中的元素(交集)sinter('key1','key2'[,'key3',...])
sinterstore 将sinter操作的结果存储到指定的键中sinterstore('dest-key','key1','key2'[,'])
sunion 返回那些⾄少存在于⼀个集合中的元素(并集)sunion('key1','key2'[,'key3',...])
sunionstore 将sunion操作的结果存储到指定的键中sunionstore('dest-key','key1','key2'[,'])
hash 散列
命令⾏为返回值使⽤⽰例(略去回调函数)
hset 在散列⾥⾯关联起给定的键值对1(新增)/0(更新)hset('hash-key','sub-key','value')(不⽀持数组、字符串)
hget 获取指定散列键的值hget('hash-key','sub-key')
hgetall 获取散列包含的键值对 json hgetall('hash-key')
hdel 如果给定键存在于散列⾥⾯,则移除这个键hdel('hash-key','sub-key')
hmset 为散列⾥⾯的⼀个或多个键设置值OK hmset('hash-key', obj)
hmget 从散列⾥⾯获取⼀个或多个键的值 array hmget('hash-key', array)
hlen 返回散列包含的键值对数量hlen('hash-key')
hexists 检查给定键是否在散列中1/0hexists('hash-key','sub-key')
hkeys 获取散列包含的所有键 array hkeys('hash-key')
hvals 获取散列包含的所有值 array hvals('hash-key')
hincrby 将存储的键值以指定增量增加返回增长后的值hincrby('hash-key','sub-key', increment)(注:假如当前value不为为字符串,则会⽆输出,程序停⽌在此处)
hincrbyfloat 将存储的键值以指定浮点数增加
zset 有序集合
命令⾏为返回值使⽤⽰例(略去回调函数)
zadd 将⼀个带有给定分⽀的成员添加到有序集合中zadd('zset-key', score,'key')(score为int)
zrange 根据元素在有序排列中的位置,从中取出元素
zrangebyscore 获取有序集合在给定分值范围内的所有元素
zrem 如果给定成员存在于有序集合,则移除
zcard 获取⼀个有序集合中的成员数量有序集的元素个数zcard('key')
redis其他常⽤命令汇总
keys命令组
命令⾏为返回值使⽤⽰例(略去回调函数)
del 删除⼀个(或多个)keys 被删除的keys的数量del('key1'[,'key2',...])
exists 查询⼀个key是否存在1/0exists('key')
expire 设置⼀个key的过期的秒数1/0expire('key', seconds)
pexpire 设置⼀个key的过期的毫秒数1/0pexpire('key', milliseconds)
expireat 设置⼀个UNIX时间戳的过期时间1/0expireat('key', timestamp)
pexpireat 设置⼀个UNIX时间戳的过期时间(毫秒)1/0pexpireat('key', milliseconds-timestamp) persist 移除key的过期时间1/0persist('key')
sort 对队列、集合、有序集合排序排序完成的队列等sort('key'[, pattern, limit offset count])
flushdb 清空当前数据库
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论