一、win下安装redis

https://github.com/MicrosoftArchive/redis/releases

下载Redis-x64-3.2.100.zip,然后解压,放到自定义目录。

然后打开命令行工具,进入到该目录下,运行安装redis服务。

redis-server.exe --service-install redis.windows-service.conf --loglevel verbose

然后就可以启动redis服务了

redis-server --service-start

  

二、redis可视化工具RedisDesktopManager

https://github.com/uglide/RedisDesktopManager/releases

现在已经不免费了,可以下载早期版本。

三、redis的数据类型

1、字符串,最基本的类型,一个key对应一个value。

//设置值
set name xiaoxu //获取值
get name //获取子字符串,包含开始和结束索引的字符
getrange name 0 -1 getrange name 1 3 //自增加1
set age 1
incr age //指定增加的数量
incrby age 5 //递减1
decr age //指定递减的数量
decrby age 3 //删除指定的键
del age //判断键是否存在
exists name //设置过期时间,单位秒
expire name 10 //查看剩余生存时间
ttl name //获取键的值类型
type name

2、哈希值,是一个键值对的集合,一个字符串类型的field和value的映射表,适合存储对象

//设置单个值
hset person name xiao //设置多个值
hmset person age 24 height 172 //获取单个值
hget person name //获取多个值
hmget person age height //获取所有值
hgetall person //删除键
hdel person name //获取所有的键
hkeys person

3、列表,简单的字符串列表,按插入顺序排序。

//往列表左边插入
lpush list 1
lpush list 2 //往列表右边插入
rpush list 3
rpush list 4 //查看列表元素
lrange list 0 -1 //弹出元素
lpop list
rpop list //通过索引获取元素
lindex list 1 //获取列表的长度
llen list //删除列表的元素
//lrem key count value
// count > 0时,从表头开始搜索,删除与value相等的元素,数量为count
// count < 0时,从表尾开始搜索,删除与value相等的元素,数量为count绝对值
// count = 0时,删除列表中所有与value相等的元素
lrem list 1 1
lrem list -1 2

4、集合,是字符串类型的无序集合

//添加元素
sadd label 1 2 3 //查看集合
smembers label //获取集合个数
scard label //删除元素
srem label 2 //交集
sadd a 1 2 3
sadd b 2 3 4
sinter a b //差集
sdiff a b //并集
sunion a b

5、有序集合,跟集合一样也是字符串的集合,不过每个元素会关联一个double类型的分数,redis通过该分数给集合中的元素进行从小到大的排序。

//添加有序成员
zadd xiaoxu 60 math 77 english 80 chinaese //获取有序成员数量
zcard xiaoxu //查看有序集合
zrange xiaoxu 0 -1 //查看有序集合,显示分数
zrange xiaoxu 0 -1 withscores //删除有序集合中的成员
zrem xiaoxu math

  

四、node.js中使用redis

安装redis库

npm install redis --save

操作redis的方法与我们在命令行中输入的命令基本一致

const redis = require('redis');

//创建一个redis客户端
let client = redis.createClient(6379, '127.0.0.1'); //操作redis基本跟在命令行操作一致
client.set('name', 'xiaoxu', function (err, result) {
if (err) {
console.log(err);
}
console.log(result);
}); client.hmset('person', 'name', 'xiaoxu', 'age', '25', function (err, result) {
if (err) {
console.log(err);
}
console.log(result);
}); client.hmget('person', 'name', 'age', function (err, result) {
if (err) {
console.log(err);
}
console.log(result);
}); client.hkeys('person', function (err, result) {
if (err) {
console.log(err);
}
result.forEach(function (value) {
client.hget('person', value, function (err, result) {
console.log(value, result);
});
});
//退出
client.quit();
});

通过bluebird来包装redis,让它支持async,await的方式,解决多层嵌套问题。

const redis = require('redis');
const bluebird = require('bluebird'); //通过bluebird包装
bluebird.promisifyAll(redis.RedisClient.prototype);
bluebird.promisifyAll(redis.Multi.prototype); //创建一个redis客户端
let client = redis.createClient(6379, '127.0.0.1'); (async function () {
//方法名后面都加上Async
let result = await client.setAsync('name', 'hehe');
console.log(result);
result = await client.hmsetAsync('person', 'name', 'xiaoxu', 'age', '25');
console.log(result);
result = await client.hkeysAsync('person');
console.log(result);
result.forEach(async function (value) {
let v = await client.hgetAsync('person', value);
console.log(value, v);
});
client.quit();
})();

  

五、redis发布与订阅

redis发布订阅是一种消息通信模式,发送者发送消息,订阅者接收消息。

const redis = require('redis');

let clientA = redis.createClient(6379, '127.0.0.1');
let clientB = redis.createClient(6379, '127.0.0.1'); //客户端A订阅频道
clientA.subscribe('news');
clientA.subscribe('sports'); //客户端A监听消息
clientA.on('message', function (channel, message) {
console.log('客户端A收到', channel, message); //客户端A在10秒后取消订阅
setTimeout(function () {
clientA.unsubscribe('news');
}, 10000);
}); setInterval(function () {
clientB.publish('news', '这是一条新闻' + new Date().toLocaleString());
clientB.publish('sports', '这是一条体育' + new Date().toLocaleString());
}, 1000);

  

六、redis事务

redis事务可以一次性执行多个命令,multi 命令之后,exec命令之前,命令都会放到队列中,直到执行exec,将会执行队列中的命令。

discard可以取消事务,放弃执行事务块内的所有命令。

const redis = require('redis');

let client = redis.createClient(6379, '127.0.0.1');

client.multi()
.hset('person', 'name', 'haohao')
.hset('person', 'age', '34')
.exec(function (err, result) {
if (err) {
console.log(err);
}
console.log(result);
client.quit();
});

注意redis中的事务跟mysql中的事务是有区别的。

node.js中对 redis 的安装和基本操作的更多相关文章

  1. 提升node.js中使用redis的性能

    问题初现 某基于node.js开发的业务系统向外提供了一个dubbo服务,提供向第三方缓存查询.设置多项业务数据并聚合操作结果.在QPS达到800时(两台虚拟机,每台机器4Core8G4node进程) ...

  2. node.js中使用Redis

    服务端: 启动Redis服务: redis-server 客户端: 1.安装Redis        npm install redis --save 2.redisTest.js文件 //引入red ...

  3. Node.js中的Session,不要觉得简单哦。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .学习网站上有对应 ...

  4. Node.js 教程 01 - 简介、安装及配置

    系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...

  5. 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查

    Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持M ...

  6. Node.js 中MongoDB的基本接口操作

    Node.js 中MongoDB的基本接口操作 连接数据库 安装mongodb模块 导入mongodb模块 调用connect方法 文档的增删改查操作 插入文档 方法: db.collection(& ...

  7. Node.js 学习(一) 安装配置

    Windowv 上安装Node.js Windows 安装包(.msi) : 32 位安装包下载地址 : http://nodejs.org/dist/v0.10.26/node-v0.10.26-x ...

  8. [转]在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查

    本文转自:https://www.cnblogs.com/kongxianghai/p/5582661.html Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用Ja ...

  9. Node.js中流程控制

    Node.js中的流程控制可以使用async,在使用之前需要先安装,使用npm安装 npm install async --g 下面主要介绍4种流程控制的方式: 1.串行无关联:async.serie ...

随机推荐

  1. n2n网络穿透内网

    目录 前言 配置 网络拓扑: 公网服务器的配置 公司电脑的配置 家里笔记本的配置 注意事项 使用n2n网络 n2n的各edge之间传输数据 补充:NAT类型 后记 前言 在家里的时候比较经常需要对公司 ...

  2. Python数据类型的内置函数之list(列表)

    Python数据类型内置函数 - str(字符串) - list(列表) - tuple(元组) - dict(字典) - set(收集) list(列表)的操作 - (append)在列表最后追加指 ...

  3. @Override is not allowed when implementing interface method

    使用idea导入maven项目时 会出现如下报错 @Override从jdk1.5开始出现的,是用来标注方法重写:通常方法重写发生在继承父类,重写父类方法,或者实现接口,实现接口方法: @Overri ...

  4. leetcode每日刷题计划-简单篇day12

    Num 125 验证回文串 Valid Palindrome 非常有收货的一道题嘻嘻嘻,本来是考试期间划水挑的题,坑点有点多 第一个是注意对temp1和temp2中途更新的判断 第二个是字符串频繁的作 ...

  5. 【学习】数据的加载、存储与文件格式【pandas】

    输入输出通常可以划分为几个大类:读取文本文件和其他更高效的磁盘存储格式,加载数据库中的数据,利用web API操作网络资源 1.读写文本格式的数据 pandas提供了一些用于将表格型数据读取为Data ...

  6. Excel组合图表快速制作小功能

    1.  选中数据区域,插入推荐的图表 2. 然后可以选择快速布局小工具进行布局微调 选中图表 -> 设计(菜单) -> 快速布局(左边) 个人特别喜欢带表格的那个组合图布局,清晰好看

  7. 常见java日志系统的搭配详解:关于slf4j log4j log4j2 logback jul jcl commons-logging jdk-logging

    先看一张图: 是不是有点晕, 晕就对了.这个仅仅是 slf4j 的情况,实际上, 我们不仅要接触到 slf4j ,有时候还会接触其他的日志系统.且看下文分解. 1 直接使用各个日志系统 1.1 直接使 ...

  8. python远程执行dos命令

    https://blog.csdn.net/huaihuaidexiao/article/details/5543240 https://blog.csdn.net/bcbobo21cn/articl ...

  9. app常见性能测试点

    转载自 https://blog.csdn.net/xiaomaoxiao336368/article/details/83547318 1.响应 冷启动 首次启动APP的时间间隔 adb shell ...

  10. mysql查询正在执行的sql

    mysql> SHOW VARIABLES LIKE "general_log%"; +------------------+------------------------ ...