Redis镜像安装
在云服务器中执行指令
docker pull redis

添加redis镜像实例的配置

[root@VM-0-11-centos ~]# cd /home
[root@VM-0-11-centos home]# ls
mongotest
[root@VM-0-11-centos home]# mkdir redistest
[root@VM-0-11-centos home]# cd redistest/
[root@VM-0-11-centos redistest]# vi docker-compose.yml
[root@VM-0-11-centos redistest]# docker-compose up -d

使用docker-compose管家工具,编写docker-compose.yml文件进行启动配置

version: "3"
services:
redis-test:
image: "redis"
restart: always
container_name: "redis-test"
ports:
# 宿主端口:容器内端口
- 15001:6379
volumes:
#建立文件备份 宿主目录:容器目录
# redis的备份不是说一有数据就会备份的,它会按照一定的策略,自己定时持久话
- /home/redistest:/data
#远程登录redis时,需要输入密码,保证redis的安全
command: ["redis-server", "--requirepass", "123456"]

上面的配置和下面的命令是等价的

docker run -itd --restart=always --name redis-test -p 15001:6379 -v /home/redistest:/data redis redis-server --requirepass 123456

通过下面的命令,可以查看镜像启动时的日志

[root@VM-0-11-centos ~]# docker logs -f redis-test

更新镜像配置

docker-compose up -d

Redis的命令行工具redis-cli

Redis常见的CLI命令
//切换到容器中的shell终端
[root@VM-0-11-centos ~]# docker exec -it redis-test /bin/bash
root@fe27aff96dc9:/data# ls
docker-compose.yml dump.rdb
//运行redis-cli命令行工具
root@fe27aff96dc9:/data# redis-cli
//输入redis设置的安全密码
127.0.0.1:6379> auth 123456
OK
//判断redis服务是否在运行
127.0.0.1:6379> ping
PONG
//断开数据库
127.0.0.1:6379> quit
//退出容器
root@fe27aff96dc9:/data# exit
exit

redis中默认有16个“database”它们其的作用是隔离的作用,它们的区分是通过index来做

分别是1,2,3..号“数据库”
27.0.0.1:6379> select 0
OK
127.0.0.1:6379> set name jack
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> set name lucy
OK
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> get name
"jack"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name
"lucy"
127.0.0.1:6379[1]>

基本操作//keys 后面接正则表达式,用于查询符合条件的所有key127.0.0.1:6379> keys *

1) "test"
2) "name"
3) "test1"
4) "name1"
127.0.0.1:6379> keys test*
1) "test"
2) "test1"
//exists 查询是否存在这个key
127.0.0.1:6379> exists test1
(integer) 1
//del 删除这个key
127.0.0.1:6379> del test1
(integer) 1
127.0.0.1:6379> exists test1
(integer) 0 127.0.0.1:6379> set num 1
OK
//incr 递增
127.0.0.1:6379> incr num
(integer) 2
//decr 递减
127.0.0.1:6379> decr num
(integer) 1

hash表//hset 集合名称 key value, key value,

127.0.0.1:6379> hset city name hangzhou people 3000
(integer) 2
127.0.0.1:6379> hset city
(error) ERR wrong number of arguments for 'hset' command
127.0.0.1:6379> hgetall city
1) "name"
2) "hangzhou"
3) "people"
4) "3000"
127.0.0.1:6379> hget city people
"3000"
127.0.0.1:6379>

订阅与发送

新开一个终端,直接进入到redis数据库,并打开redis-cli工具
然后开启一个订阅
[root@VM-0-11-centos ~]# docker exec -it redis-test redis-cli -h 127.0.0.1 -a 123456

127.0.0.1:6379> subscribe name name1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "name"
3) (integer) 1
1) "subscribe"
2) "name1"
3) (integer) 2
1) "message"
2) "name"
3) "hello a jack"
从另一个端口发布一个通知
127.0.0.1:6379> publish name "hello a jack"
(integer) 1
127.0.0.1:6379>

服务器相关

flushdb, flushall 清空数据库127.0.0.1:6379[1]> flushdb
OK
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
1) "city"
2) "test"
3) "name"
4) "num"
5) "name1"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> flushall
OK
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379>
 
Node工程建立Redis链接
首先安装redis第三方库
npm i -S redis

创建工具类RedisHelper.js

const redis = require("redis");

// //存在用户名:密码时
// // format redis[s]://[[username][:password]@][host][:port][/db-number]:
// const client = redis.createClient({
// url: "redis://root:0059ssxxSS11@1.xxx.xxx.159:6379",
// });
//
// //不存在用户名时,password为鉴权密码
// const client = redis.createClient({
// url: "redis://:password1@192.168.0.1:6379",
// }); //链接配置
const options = {
url:'redis://:123456@1.15.55.28:15001'
}; const client = redis.createClient(options) //监听错误事件
client.on("error", (err) => {
console.log("redis error", err);
}); (async ()=>{
//建立链接
await client.connect(); //写数据
await client.set("city",'hangzhou'+Date.now())
//读数据
const value = await client.get("city")
console.log("value: "+value) //关闭链接
await client.quit() //关闭连接 quit可以确保在连接销毁之前,挂起的命令被发送到redis
// await client.disconnecting() //强制关闭连接 挂起的命令可能没有被发送到redis
})()

执行

node RedisHelper.js
使用bluebird对redis的client的所有异步方法包裹一层Promise,方便开发
const redis = require("redis");
const bluebird = require('bluebird')
const {config} = require('./Config') //链接配置
const options = {
url:'redis://:123456@'+config.URL+":"+config.Port
}; // 使用bluebird将redis中的所有异步方法包括一层Asnyc
const client = bluebird.promisifyAll(redis.createClient(options)) //监听错误事件
client.on("error", (err) => {
console.log("redis error", err);
}); (async ()=>{
//建立链接
await client.connect(); //写数据
await client.set("city",'hangzhou'+Date.now())
//读数据
const value = await client.get("city")
console.log("value: "+value) //关闭链接
// await client.quit() //关闭连接 quit可以确保在连接销毁之前,挂起的命令被发送到redis
// await client.disconnecting() //强制关闭连接 挂起的命令可能没有被发送到redis
})() //添加导出方法 const getAsync = (key) => {
return new Promise((resolve, reject) => {
client.get(key)
.then((res) => {
resolve(res);
})
.catch((err)=>{
reject(err);
});
});
} // const getValue = (key) => {
// return getAsync(key)
// }
const getValue = (key) => {
//bluebird内部提供了getAsync方法,它是把get方法封了一层Promise
return client.getAsync(key)
} exports.getValue = getValue;
 Redis图形GUI工具
AnotherRedisDesktopManager
https://github.com/qishibo/AnotherRedisDesktopManager

填写主机IP,授权密码,链接名点击OK进行登录

其中的redis-demo项目

Node工程使用云服务器中的redis镜像做数据库的更多相关文章

  1. 【攻略】如何在云开发中使用 Redis?

    默认情况下,云开发的函数部署在公共网络中,只可以访问公网.如果开发者需要访问腾讯云的 Redis.TencentDB.CVM.Kafka 等资源,需要建立私有网络来确保数据安全及连接安全. 本文会演示 ...

  2. 使用Navicat连接阿里云服务器中的Mysql数据库

    1.首先将阿里云服务器中的安全组添加上Mysql的端口3306,如下图所示: 步骤就是进入到阿里云的官网,点击右上角控制台,在左边选择云服务器ECS--->实例 点击图中的管理按钮,然后选择本实 ...

  3. 关于云服务器中tomcat配置出现的部分问题以及解决方法

    问题描述:(一)tomcat的8080端口修改为80端口之后不能使用域名直接访问: (二)添加的项目不能通过域名直接访问(服务器端还待解决) 大致配置流程: 1.需要先购买合适的服务器,进行域名备案, ...

  4. 连接云服务器中MySql数据库遇到的问题

    使用的免费的云服务器,上面只能下载MySql数据库,不过当云数据库使用绰绰有余了,也就放一些测试数据而已 而且上面只可以部署php项目,.netcore项目部署实现比较麻烦 问题如下: 下载了navi ...

  5. 阿里云服务器中MySQL数据库被攻击

    前几天刚领了一个月的阿里云服务器玩,在里面装了MySQL,然后这几天找了个小项目练习着玩呢,就将表建在里面了. 刚访问添加员工还好好的,刚给员工分页查询呢 ,啪一下 ,很突然昂 ,就访问不了了 ,看控 ...

  6. 在阿里云服务器中配置JDK、tomcat、mysql

    阿里云服务器搭建配置 linux命令:参考:https://www.cnblogs.com/itdansan/p/8545187.html cat 文件名: 查看文件内容 ctrl+D : 退出查看 ...

  7. 阿里云服务器实战(二): Linux MySql5.6数据库乱码问题

    在阿里云上了买了一个云服务器, 部署了一个程序,发现插入数据库后乱码了,都成了'????'.  一开始怀疑是Tomcat7的原因 , 见文章 : http://blog.csdn.net/johnny ...

  8. 在阿里云服务器中安装配置mysql数据库完整教程

    阿里云ECS服务器CentOS7上安装MySql服务 (可选)1.确保服务器系统处于最新状态 [root@localhost ~]# yum -y update如果显示以下内容说明已经更新完成 Rep ...

  9. 基于Cent os 云服务器中SVN 服务器的搭建---具体实践是可行的 一次备注便于后续查找

    https://blog.csdn.net/shadowyingjian/article/details/80588544http://www.hongyanliren.com/2015m04/329 ...

  10. linux 【阿里云服务器】 配置 redis 的正确流程

    1.前言 我的域名备案前几天通过了,这篇随笔完整的记录 redis 的安装流程 与各种 问题 的 具体解决方案. 2.操作[跟着步骤来] (1)指令cd /usr/local 进入local文件夹里面 ...

随机推荐

  1. C++岗位面试真题宝典 -- 操作系统篇

    2.1 Linux中查看进程运行状态的指令.查看内存使用情况的指令.tar解压文件的参数. 参考回答 查看进程运行状态的指令:ps命令."ps -aux | grep PID",用 ...

  2. d3生成器--line,area,diagonal

    https://blog.csdn.net/qq_31396185/article/details/78147612

  3. C#之RabbitMQ

    本文内容整理自https://blog.csdn.net/by_ron/category_6167618.html RabbitMQ–环境搭建 能点进来相信你明白RabbitMQ是干什么的了,这个系列 ...

  4. docker 原理之 namespace (上)

    1. namespace 资源隔离 namespace 是内核实现的一种资源隔离技术,docker 使用 namespace 实现了资源隔离. Liunx 内核提供 6 种 namespace 隔离的 ...

  5. zookeeper分布式锁原理及使用 curator 实现分布式锁

    本文为博主原创,未经允许不得转载: 1. zookeeper 分布式锁应用场景及特点分析 2. zookeeper 分布式原理 3. curator 实现分布式锁 1. zookeeper 分布式锁: ...

  6. feign接口自动生成工具

    最近发现开发spring cloud时,编写feign接口是一件痛苦的事,不仅要编写feign接口,还有fallback.请求参数和返回值等,大量重复工作,很浪费时间. 于是便想到可以编写工具自动生成 ...

  7. pojo层、dao层、service层、controller层的作用

    分层解耦介绍 1.pojo层(model) 实体层 数据库在项目中的类 model是模型的意思,与entity.domain.pojo类似,是存放实体的类. 类中定义了多个类属性,并与数据库表的字段保 ...

  8. Linux-文件压缩-tar-gzip

  9. linux 内存盘的使用方式与验证

    linux 内存盘的使用方式与验证 背景 某些情况下, 硬盘的写入是一个很大的瓶颈 使用 内存文件系统的方式应该能够极大的提高IO的速度. 内存盘的优点是比较快, 缺点就是数据不是持久化的. 其实还是 ...

  10. [转帖]vCenter使用 VMCA 续订证书:续订证书时发生意外错误

    https://www.dinghui.org/vcenter-sts-certificate.html 起因:有一处客户vCenter告警:STS签名证书即将过期. 处理办法:系统管理-证书-证书管 ...