队列的应用实例
华为云云耀云服务器L实例评测|在云耀云服务器L实例使用docker安装redis
购买云耀云服务器 L 实例
华为云耀云服务器 L 实例是一款轻量级云服务器,开通选择实例即可立刻使用,不需要用户再对服务器进行基础配置。新用户还有专享优惠,2 核心 2G 内存 3M 带宽的服务器只要 89 元/年,可以点击华为云云耀云服务器 L 实例购买地址去购买云服务器。
购买指导可以查看上一篇文章华为云云耀云服务器 L 实例评测 |云服务器选购。
云耀云服务器 L 实例安装 docker
这一部分在上一篇文章中已经详细说明,详见华为云云耀云服务器 L 实例评测|在云耀云服务器 L 实例上安装 Docker,本文不再赘述。
测试 Docker 是否正常运行
# 查看docker版本
docker version
# 测试运行容器
docker run hello-world
看到输出 docker 版本则表示 docker 已经成功安装,此时我们可以继续运行 hello world 的容器,测试容器是否可以正常运行。
如果 Docker 正常运行,就可以看到 docker 在成功创建容器并运行容器后,输出 hello from Docker!
redis 简介
Redis 是一个开源的内存型数据库,也被称为数据结构服务器 nosql。它是一种高性能、非关系型数据库,通常用于缓存和快速存储键值对数据,也可以支持多种复杂的数据结构。
Redis 在许多应用场景中都有应用,比如缓存、会话存储、消息队列、计数器、排行榜、实时分析和发布/订阅系统等。
查看可用的 Redis 版本
可以在 redis 镜像地址: https://hub.docker.com/_/redis?tab=tags,可以这里查找到所有可用的 redis 版本。
同时通过 docker 搜索指令,可以输出 redis 可用版本,供之后 docker 拉取镜像选择版本。
docker search redis
拉取 Redis 镜像
这里拉取的是最新的 redis 镜像,用 latest 标识。也可以根据上面输出的 redis 版本进行指定版本的 redis 镜像拉取。
docker pull redis:latest
查看本地所有镜像
当 redis 镜像下载完成后,我们可以通过 images 命令查看本地所有的 docker 镜像。
docker images
运行 redis 容器
通过 run 命令运行 docker 容器,这里可以使用上面下载好的 redis 镜像,也可以指定本地未下载的 redis 镜像版本,此时 docker 会先执行 pull 命令,下载完 redis 镜像后才执行 run 命令。
docker run -itd --name redis-test -p 6379:6379 redis
参数说明:
•-p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机 ip:6379 访问到 Redis 的服务。
查看运行情况
ps 命令会输出所有的正在运行的 docker 容器
docker ps
进入容器内部,还可以通过 redis-cli 连接测试使用 redis 服务。
docker exec -it redis-test /bin/bash
redis-cli
set name berbai
get name
到此 docker 安装 redis 已经完成啦。
将数据文件映射至宿主机
创建存放 redis 数据的文件夹
mkdir -p ~/i/apps/redis/{conf,data}
下载配置文件
cd ~/i/apps/redis/conf
wget https://raw.githubusercontent.com/antirez/redis/5.0/redis.conf
修改下载的配置文件
sudo vim redis.conf
1.注释 bind 127.0.0.1
2.protected-mode yes 修改成 protected-mode no
3.添加 requirepass yourpassword 【可选】(注:不添加则可以无密码访问)
redis.conf文件修改内容参考如下:
# 注释符号 #
# 1. 注释 bind 127.0.0.1
# 2. protected-mode yes 修改成 protected-mode no
# 3. 添加 requirepass yourpassword (注:不添加则可以无密码访问)
# 注:步骤1和步骤的2目的是为了远程连接redis,如果只需本地访问就无需修改。
# bind 127.0.0.1
protected-mode no
创建并启动容器
如果刚刚创建的容器还存在,那么需要先删除刚刚创建的redis容器,再执行run命令。
docker rm -f redis-test
-f 参数是强制删除,实际生产环境中请谨慎使用。
docker run -d -p 6379:6379 -v ~/i/apps/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf -v ~/i/apps/redis/data:/data --name myredis redis redis-server /usr/local/etc/redis/redis.conf
到此redis容器成功运行,并且使用宿主机的redis配置文件,和外部数据存储能力,删除redis容器后数据仍存在。-----已授权转载
","gnid":"96f22fc80ec027120","img_data":[{"flag":2,"img":[{"desc":"","height":"529","title":"","url":"https://p0.ssl.img.360kuai.com/t01fd43db3d6249b762.jpg","width":"1283"},{"desc":"","height":"564","title":"","url":"https://p0.ssl.img.360kuai.com/t01aa88e067ea0ee86a.jpg","width":"468"},{"desc":"","height":"558","title":"","url":"https://p0.ssl.img.360kuai.com/t01b82f12dea9947d5e.jpg","width":"533"},{"desc":"","height":"639","title":"","url":"https://p0.ssl.img.360kuai.com/t01a9c4261cd8a8a62f.jpg","width":"1277"},{"desc":"","height":790,"title":"","url":"https://p0.ssl.img.360kuai.com/t018dc633e1b3cc9ea0.jpg","width":1280},{"desc":"","height":"194","title":"","url":"https://p0.ssl.img.360kuai.com/t013476bc193feda583.jpg","width":"1256"},{"desc":"","height":"158","title":"","url":"https://p0.ssl.img.360kuai.com/t01ed3db65e07f8e51c.jpg","width":"900"},{"desc":"","height":"130","title":"","url":"https://p0.ssl.img.360kuai.com/t01297d7fdbeab2f886.jpg","width":"1252"},{"desc":"","height":"109","title":"","url":"https://p0.ssl.img.360kuai.com/t01e4fc939a1a55651b.jpg","width":"1283"},{"desc":"","height":"276","title":"","url":"https://p0.ssl.img.360kuai.com/t0167a0454b801c7bca.jpg","width":"1254"},{"desc":"","height":"390","title":"","url":"https://p0.ssl.img.360kuai.com/t017405ea54bec0c5e1.jpg","width":"988"},{"desc":"","height":"267","title":"","url":"https://p0.ssl.img.360kuai.com/t01faa2e00da723ef3b.jpg","width":"1283"},{"desc":"","height":"134","title":"","url":"https://p0.ssl.img.360kuai.com/t013c3dc444cae96bd1.jpg","width":"872"},{"desc":"","height":"75","title":"","url":"https://p0.ssl.img.360kuai.com/t01a2479ccdf469b08c.jpg","width":"1283"}]}],"original":0,"pat":"art_src_0,fts0,sts0","powerby":"pika","pub_time":1699922366000,"pure":"","rawurl":"http://zm.news.so.com/135bb5c11a40d2f98d1b0bf377f12be7","redirect":0,"rptid":"f57a0d844f446c67","rss_ext":[],"s":"t","src":"杨老师技术评论","tag":[{"clk":"kdigital_1:数据结构","k":"数据结构","u":""}],"title":"在云耀云服务器L实例使用docker安装redis
甘矩所3872如何利用jquery 队列实现函数的依次执行? -
郑姬泡13910561231 ______ 本jquery队列函数用法.分享给大家供大家参考.具体实现方法如下:<!DOCTYPE><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript" src="jquery-1.9.1.js"></script></head...
甘矩所3872JAVA编程实现简单的队列入队操作!
郑姬泡13910561231 ______ class Element{ int id; String name; Element(int a,String n){ id=a;name=n; } } class SeqQueue{ int first,last,maxsize; Element queue[]; SeqQueue(int i){ maxsize=i; first=last=-1; queue=new Element[i]; } public void clear(){//置空 first=last=-1; } public ...
甘矩所3872请设计一个程序用于描述堆栈和队列存取功能的例子. -
郑姬泡13910561231 ______ // 接口类,命名随意 public interface Access { // 插入方法 void put(char c); // 取出方法 char get(); } // 子类继承接口实现具体的堆栈结构 public class Stack : Access { // 用来存储字符串 private char[] _chars; // 用来栈顶计数 private int ...
甘矩所3872如何使用Redis 做队列操作 -
郑姬泡13910561231 ______ redis 队列操作的例子(php) http://www.jb51.net/article/30093.htm 详细可以参考这个,有图解教程,希望可以帮到你
甘矩所3872请教:使用消息队列是不是不宜直接传输大量的数据 -
郑姬泡13910561231 ______ 首先你要知道队列的应用场景在于哪里.一般在需要后台大量逻辑处理或计算资源的情况下采取队列,同时也可以提高前端的用户体验.举个例子:微博-关注/粉丝,假如你有1000个粉丝,你发了一条微博,这时候1000个粉丝都会收到你的动态,消息队列便适合在这样的场景下用.原因:1 推送1000个动态数据是耗时操作,而发送微博页面需要尽快响应,因此可将该任务放置到队列;2 你发送了微博之后是即时生效的,但粉丝收到微博允许有些许的延迟,通过队列的方式实现也契合该需求;3 针对队列的处理可以采取高性能的集群架构实现,架构上实现了关注点分离,系统在扩展方面更加灵活
甘矩所3872求一些栈和队列的应用实例及答案? -
郑姬泡13910561231 ______ #include "stdio.h" #include "malloc.h" typedef struct node1{ int *data; int top; void init(void); void del(void); int pop(int&); void push(int&); }s; void node1::init(){ data=(int*)malloc(sizeof(int)*100); top=0; } void node1::del(){ free(data); top=0; } int ...
甘矩所3872java 自行编写程序实现队列的效果 -
郑姬泡13910561231 ______ class myqueue { ArrayList<Integer> list = new ArrayList<Integer>(); public boolean add(Integer value) { return list.add(value); } public boolean offer(Integer value) { return list.add(value); } /** * function: 获取但不移除对象的头 为空时抛出异常 * @...
甘矩所3872求一个顺序队列的简单实现(C语言),所谓简单,只有include<stdio.h>,无其它头文件 -
郑姬泡13910561231 ______ #include#include#define NULL 0; typedef struct QNode { int data; struct QNode * next; }QNode,* QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue; QueuePtr p; int InitQueue(LinkQueue &Q) //构造空队列 { Q.front = Q.rear = (...
甘矩所3872如何应用.NET中的消息队列服务 -
郑姬泡13910561231 ______ 建立一个队列是应用MSMQ的第一步.您可以通过Windows计算机管理控制台中的消息队列选项完成这一操作,或者自己编程建立一个队列.列表A中的C#代码建立了一个新的私有MSMQ消息队列(如果不存在队列),并同时创建一条消息....
甘矩所3872队列类模板的设计与实现 -
郑姬泡13910561231 ______ //队列类模板的设计与实现 #ifndef QUEUE_CLASS #define QUEUE_CLASS #include #include using namespace std; const int MaxQSize = 50; //队列元素最大个数 //类的声明 template class Queue { private: int front, rear, count; //队头指针、队...