本文实例讲述了node.js中 redis 的安装和基本操作。分享给大家供大家参考,具体如下:

一、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程序设计有所帮助。

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

  1. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. node.js三个步骤实现一个服务器及Express包使用

    这篇文章主要介绍了node.js三个步骤实现一个服务器及Express包使用,文章通过新建一个文件展开全文内容,具有一定的参考价值,需要的小伙伴可以参考一下

  3. Node.js调试技术总结分享

    Node.js是一个可以快速构建网络服务及应用的平台。该平台的构建是基于Chrome's JavaScript runtime,也就是说,实际上它是对Google V8引擎(应用于Google Chrome浏览器)进行了封装。 今天介绍Node.js调式目前有几种技术,需要的朋友可以参考下。

  4. 布隆过滤器(bloom filter)及php和redis实现布隆过滤器的方法

    这篇文章主要介绍了布隆过滤器(bloom filter)介绍以及php和redis实现布隆过滤器实现方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  5. node.js实现http服务器与浏览器之间的内容缓存操作示例

    这篇文章主要介绍了node.js实现http服务器与浏览器之间的内容缓存操作,结合实例形式分析了node.js http服务器与浏览器之间的内容缓存原理与具体实现技巧,需要的朋友可以参考下

  6. 教你如何使用node.js制作代理服务器

    本文介绍了如何使用node.js制作代理服务器,图文并茂,十分的详细,代码很简洁易懂,这里推荐给大家。

  7. node.js中的fs.openSync方法使用说明

    这篇文章主要介绍了node.js中的fs.openSync方法使用说明,本文介绍了fs.openSync方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下

  8. Node.js+ELK日志规范的实现

    这篇文章主要介绍了Node.js+ELK日志规范的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  9. node.js爬虫框架node-crawler初体验

    这篇文章主要介绍了node.js爬虫框架node-crawler的相关资料,帮助大家利用node.js进行爬虫,感兴趣的朋友可以了解下

  10. node.js中的fs.existsSync方法使用说明

    这篇文章主要介绍了node.js中的fs.existsSync方法使用说明,本文介绍了fs.existsSync方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下

随机推荐

  1. Error: Cannot find module ‘node:util‘问题解决

    控制台 安装 Vue-Cli 最后一步出现 Error: Cannot find module 'node:util' 问题解决方案1.问题C:\Windows\System32>cnpm install -g @vue/cli@4.0.3internal/modules/cjs/loader.js:638 throw err; &nbs

  2. yarn的安装和使用(全网最详细)

    一、yarn的简介:Yarn是facebook发布的一款取代npm的包管理工具。二、yarn的特点:速度超快。Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。超级安全。在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。超级可靠。使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。三、y

  3. 前端环境 本机可切换node多版本 问题源头是node使用的高版本

    前言投降投降 重头再来 重装环境 也就分分钟的事 偏要折腾 这下好了1天了 还没折腾出来问题的源头是node 使用的高版本 方案那就用 本机可切换多版本最终问题是因为nodejs的版本太高,导致的node-sass不兼容问题,我的node是v16.14.0的版本,项目中用了"node-sass": "^4.7.2"版本,无法匹配当前的node版本根据文章的提

  4. nodejs模块学习之connect解析

    这篇文章主要介绍了nodejs模块学习之connect解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. nodejs npm package.json中文文档

    这篇文章主要介绍了nodejs npm package.json中文文档,本文档中描述的很多行为都受npm-config(7)的影响,需要的朋友可以参考下

  6. 详解koa2学习中使用 async 、await、promise解决异步的问题

    这篇文章主要介绍了详解koa2学习中使用 async 、await、promise解决异步的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. Node.js编写爬虫的基本思路及抓取百度图片的实例分享

    这篇文章主要介绍了Node.js编写爬虫的基本思路及抓取百度图片的实例分享,其中作者提到了需要特别注意GBK转码的转码问题,需要的朋友可以参考下

  8. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. node.js三个步骤实现一个服务器及Express包使用

    这篇文章主要介绍了node.js三个步骤实现一个服务器及Express包使用,文章通过新建一个文件展开全文内容,具有一定的参考价值,需要的小伙伴可以参考一下

  10. node下使用UglifyJS压缩合并JS文件的方法

    下面小编就为大家分享一篇node下使用UglifyJS压缩合并JS文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

返回
顶部