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. SpringBoot 项目实战 | 瑞吉外卖 Day02

    该系列将记录一份完整的实战项目的完成过程,该篇属于第二天 案例来自B站黑马程序员Java项目实战<瑞吉外卖>,请结合课程资料阅读以下内容 该篇我们将完成以下内容: 完善登陆系统 新增员工 ...

  2. vue 状态管理 一、状态管理概念和基本结构

    系列导航 vue 状态管理 一.状态管理概念和基本结构 vue 状态管理 二.状态管理的基本使用 vue 状态管理 三.Mutations和Getters用法 vue 状态管理 四.Action用法 ...

  3. vscode报错Already included file name ‘xxx‘ differs from file name ‘xxx‘ only in casing的解决方法:

    场景:我们创建了一个文件是小写开头的,又改成大写开头的. 比如: relationDemo.vue 改成 RelationDemo.vue 原因:缓存的判重逻辑是不区分大小写导致的.在这种情况下,vs ...

  4. Go语言安装(Windows10)

    一. 官网下载 https://golang.google.cn/dl/   二. 软件包安装 选择对应的路径进行安装   三. 环境变量设置 1.path 检查系统环境变量Path内已经添加Go的安 ...

  5. 【C++】类成员冒号初始化以及构造函数内赋值

    From:https://blog.csdn.net/zj510/article/details/8135556 通常我们对类成员进行"初始化"有两种方式: 1. 构造函数后面跟冒 ...

  6. 【Mysql系列】(二)日志系统:一条更新语句是如何执行的

    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 这篇文章是从Github ReadMe拷贝的,内容实践下载是没问题的,能够正 ...

  7. JDBC针对SQLServer的sendStringParametersAsUnicode=false的验证

    JDBC针对SQLServer的sendStringParametersAsUnicode=false的验证 背景 部分客户的SQLServer数据库出现了大量死锁的情况. 虽然部分客户并没有反馈死锁 ...

  8. [转帖]Django系列3-Django常用命令

    文章目录 一. Django常用命令概述 二. Django常用命令实例 2.1 help命令 2.2 version 2.3 check 2.4 startproject 2.5 startapp ...

  9. [转帖]深入理解mysql-第十二章 mysql查询优化-Explain 详解(下)

    我们前面两章详解了Explain的各个属性,我们看到的都是mysql已经生成的执行计划,那这个执行计划的是如何生成的?我们能看到一些过程指标数据吗?实际mysql贴心为我们提供了执行计划的各项成本评估 ...

  10. 【转帖】什么是RLHF

    什么是RLHF? **字面翻译:**RLHF (Reinforcement Learning from Human Feedback) ,即以强化学习方式依据人类反馈优化语言模型. 强化学习从人类反馈 ...