猿创征文|云原生|25docker运行数据库实战之redis(代码片段)

小鹏linux 小鹏linux     2022-12-01     601

关键词:

作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道第一名🏅 阿里云ACE认证高级工程师🏅
✒️个人主页:小鹏linux
💊个人社区:小鹏linux(个人社区)欢迎您的加入!

为大家推荐一款刷题神奇 点击链接访问牛客网

各大互联网大厂面试真题。基础题库到进阶题库等各类面试题应有尽有!

牛客网面经合集,满足大厂面试技术深度,快速构建Java核心知识体系大厂面试官亲授,备战面试与技能提升,主要考点+主流场景+内功提升+真题解析

目录

1. 关于NoSQL

1.1 NoSQL的概念

1.2 NoSQL的特性

1.3 NoSQL优点

2. 关于Redis 

2.1 Redis持久化数据的机制

2.2 Redis主从同步的原理 

2.3 Redis及其优缺点 

3.  在Docker中运行Redis

3.1 连接Redis容器 

3.2 使用自定义配置

  👑👑👑结束语👑👑👑


1. 关于NoSQL

1.1 NoSQL的概念

NoSQL(NoSQL = Not Only SQL ),不意为反SQL运动,是一项全新的数据库革命性运动,2000年前就有人提出,发展至2009年趋势越发高涨。它是指运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

分类

Examples举例

典型应用场景

数据模型

优点

键值(key-value

Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB

内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。

Key 指向 Value 的键值对,通常用hash table来实现

查找速度快

列存储数据库

Cassandra, HBase, Riak

分布式的文件系统

以列簇式存储,将同一列数据存在一起

查找速度快,可扩展性强,更容易进行分布式扩展

文档型数据库

CouchDB, MongoDB

Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)

Key-Value对应的键值对,Value为结构化数据

数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构

图形(Graph)数据库

Neo4J, InfoGrid, Infinite Graph

社交网络,推荐系统等。专注于构建关系图谱

图结构

利用图结构相关算法。比如最短路径寻址,N度关系查找等

1.2 NoSQL的特性

NoSQL是key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如说遵循SQL标准、ACID属性、表结构等等。

这类数据库主要有以下特点:

        非关系型的、分布式、开源的、水平可扩展的

        处理超大量数据

        击碎了性能瓶颈

        对数据高并发读写

        对海量数据的高效率存储和访问

        对数据的高扩展性和高可用性

1.3 NoSQL优点

易于数据分散,数据间相对独立,没有关联

提升性能和扩展,是水平扩展的解决方案

速度较快,绝大多数数据存储在内存之中

2. 关于Redis 

2.1 Redis持久化数据的机制

RDB:定期的 或 具备触发条件 或 手动执行的完整备份的方式

        优点:还原速度快

        缺点:较大的资源浪费(时间、空间)

AOF:仅仅只保存修改的数据(数据结构被替换)- 增量备份

        根据企业自己需求确定开启哪一个(只做缓存都不开启也没事

2.2 Redis主从同步的原理 

从服务器向主服务器发送SYNC请求;

主服务器执行BGSAVE命令,将当前内存里的所有数据拍照为快照文件,将快照文件发送给从服务器,在此期间所有有修改的命令会被记录下来;

从服务器执行快照;

从服务器执行快照,若主服务器有数据被修改,就发送缓存的命令,从服务器执行;

(等同于先发送完整备份在发送增量备份)

2.3 Redis及其优缺点 

 Redis是一个开源的,先进的key-value存储。它通常被称为数据结构服务器,因为键可以包含string(字符串)、hash(哈希)、list(链表)、set(集合)和zset(sorted-set--有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作。

Redis和Memcached类似,它支持存储的value类型相对更多,与memcached一样,为了保证效率,数据都是缓存在内存中,区别是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

优点

         保证数据的一致性和原子性

         数据更新的开销很小

         可以进行复杂处理

         存在较多成熟案例和模板信息

缺点

         大量的数据写入

         表结构的变更

         查询速度

         集群化的难度

3.  在Docker中运行Redis

通过docker run指令可以直接启动一个redis-container容器:

$ docker run --name redis-container -d redis 
6f7d16f298e9c505f35ae28b61b4015877a5b0b75c60797fa4583429e4a14e24
之后可以通过docker ps指令查看正在运行的redis-container容器的容器ID:
$ docker ps 
CONTAINER ID     IMAGE     COMMAND     CREATED     STATUS     PORTS     NAMES 
6f7d16f298e9     redis     "docker-entrypoint.sh" 32 seconds ago Up 31 seconds 6379/tcp redis-container

同样可以通过env指令查看环境变量的配置:

$ docker exec -it 6f7d16f298e9 bash 
root@6f7d16f298e9:/data# uptime 
 12:26:19 up 20 min, 0 users, load average: 0.00, 0.04, 0.10 
root@6f7d16f298e9:/data# free 
        total         used         free         shared         buffers         cached 
Mem:    1020096       699280       320816       126800         50184           527260 
-/+ buffers/cache:    121836       898260 
Swap:   1181112            0      1181112

也可以通过ps指令查看当前容器运行的进程信息:

root@6f7d16f298e9:/data# env 
HOSTNAME=6f7d16f298e9 
REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-3.0.7.tar.gz 
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
PWD=/data 
SHLVL=1 
HOME=/root 
REDIS_DOWNLOAD_SHA1=e56b4b7e033ae8dbf311f9191cf6fdf3ae974d1c 
REDIS_VERSION=3.0.7 
GOSU_VERSION=1.7 _=/usr/bin/env

3.1 连接Redis容器 

用户可以使用--link参数,连接创建的redis-container容器:

root@6f7d16f298e9:/data# ps -ef 
UID         PID     PPID     C     STIME     TTY         TIME     CMD 
redis         1        0     0     12:16     ?           00:00:02 redis-server *:6379 
root         30        0     0     12:51     ?           00:00:00 sh 
root         39 3      0     0     12:52     ?           00:00:00 ps -ef

进入alpine系统容器后,可以使用ping指令测试redis容器:

$ docker run -it --link redis-container:db alpine sh 
/ # ls

还可以使用nc指令(即NetCat)检测redis服务的可用性:

/ # ping db 
PING db (172.17.0.2): 56 data bytes 
64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.088 ms 
64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.103 ms 
--- db ping statistics --- 
2 packets transmitted, 2 packets received, 0% packet loss 
round-trip min/avg/max = 0.088/0.095/0.103 ms

官方镜像内也自带了redis客户端,可以使用以下指令直接使用:

/ # nc db 6379 
PING 
+PONG

3.2 使用自定义配置

可以通过数据卷实现自定义redis配置,如下所示:

$ docker run -it --link redis-container:db --entrypoint redis-cli redis -h db 
db:6379> ping 
PONG 
db:6379> set 1 2 
OK
db:6379> get 1 
"2"

  👑👑👑结束语👑👑👑

为大家推荐一款刷题神奇 点击链接访问牛客网

各大互联网大厂面试真题。基础题库到进阶题库等各类面试题应有尽有!

牛客网面经合集,满足大厂面试技术深度,快速构建Java核心知识体系大厂面试官亲授,备战面试与技能提升,主要考点+主流场景+内功提升+真题解析

猿创征文|云原生领域之容器日常使用工具推荐(代码片段)

猿创征文|云原生领域之容器日常使用工具推荐一、云原生介绍1.云原生定义2.容器技术简介3.云原生相关工具导航二、Docker1.Docker介绍①Docker简介②Docker特点③Docker的三个基本概念④Docker的架构图2.Docker的优势3.Docker的使用效果①... 查看详情

猿创征文|国产数据库实战使用docker部署polardb-x云原生分布式开源数据库(代码片段)

猿创征文|【国产数据库实战】使用docker部署PolarDB-X云原生分布式开源数据库一、PolarDB-X介绍1.PolarDB-X简介2.PolarDB-X特点二、检查docker版本三、检查docker配置信息四、下载PolarDB-X镜像五、部署PolarDB-X1.创建PolarDB-X容器2.检查PolarDB-X容... 查看详情

猿创征文|云原生之docker使用docker部署flare个人导航网页(代码片段)

猿创征文|【云原生之Docker】使用Docker部署Flare个人导航网页一、卷首语二、Flare介绍1.Flare介绍2.Flare的硬件配置要求3.Flare的特点三、检查本地docker环境1.检查docker服务状态2.检查docker配置信息3.开启IPv4forwarding四、安装docker-com... 查看详情

猿创征文|国产数据库实战之使用docker部署oceanbase数据库(代码片段)

猿创征文|国产数据库实战之使用Docker部署OceanBase数据库一、OceanBase介绍1.OceanBase介绍2.OceanBase特点3.OceanBase数据库基础概念4.OceanBase相关概念①OBServer②区域(zone)③资源池④租户⑤数据分区⑥副本5.本次实践介绍二、检查... 查看详情

猿创征文|云原生|27docker部署运行开源消息队列实现rabbitmq(代码片段)

作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道第一名🏅 阿里云ACE认证高级工程师🏅✒️个人主页:小鹏linux💊个人社区:小鹏linux(个人社区)欢迎您的加入!为大... 查看详情

猿创征文|国产数据库实战之使用docker部署tidb集群(代码片段)

猿创征文|国产数据库实战之使用Docker部署TiDB集群一、TiDB介绍1.TiDB简介2.TiDB特性3.TiDB集群整体架构4.TiDB集群各部分介绍5.本次TiDB集群组件二、检查本地环境1.检查docker状态2.检查docker版本3.检查docker-compose版本三、下载tidb-docker-comp... 查看详情

猿创征文|国产数据库实战之使用docker部署tidb集群(代码片段)

猿创征文|国产数据库实战之使用Docker部署TiDB集群一、TiDB介绍1.TiDB简介2.TiDB特性3.TiDB集群整体架构4.TiDB集群各部分介绍5.本次TiDB集群组件二、检查本地环境1.检查docker状态2.检查docker版本3.检查docker-compose版本三、下载tidb-docker-comp... 查看详情

猿创征文|国产数据库实战之使用docker部署tidb集群(代码片段)

猿创征文|国产数据库实战之使用Docker部署TiDB集群一、TiDB介绍1.TiDB简介2.TiDB特性3.TiDB集群整体架构4.TiDB集群各部分介绍5.本次TiDB集群组件二、检查本地环境1.检查docker状态2.检查docker版本3.检查docker-compose版本三、下载tidb-docker-comp... 查看详情

猿创征文|国产数据实战之docker部署mywebsql数据库管理工具(代码片段)

猿创征文|国产数据实战之docker部署MyWebSQL数据库管理工具一、MyWebSQL介绍1.MyWebSQL简介2.MyWebSQL特点二、检查本地环境1.检查docker状态2.检查docker-compose版本三、下载MyWebSQL镜像四、部署MyWebSQL工具1.编辑docker-compose.yaml2.创建MyWebSQL容器... 查看详情

猿创征文|国产数据库实战之tidb数据库快速入门(代码片段)

猿创征文|国产数据库实战之TiDB数据库快速入门一、系统检查1.检查系统版本2.查看本地IP地址3.TiDB集群介绍二、快速部署本地测试集群1.安装TiUP工具2.声明全局环境变量3.快速部署TiDB集群三、连接TiDB数据库1.新开一个session以访问T... 查看详情

猿创征文|国产数据库之使用pxd在docker环境下部署polardb-x集群(代码片段)

猿创征文|国产数据库之使用PXD在Docker环境下部署PolarDB-X集群一、PolarDB-X介绍1.PolarDB-X简介2.PolarDB-X特点二、PolarDB-X的产品架构1.产品架构图2.PolarDB-X架构介绍三、环境规划四、Docker安装1.安装系统工具2.配置docker的yum仓库源3.安装doc... 查看详情

云原生之docker实战使用docker部署showdoc文档工具(代码片段)

【云原生之Docker实战】使用Docker部署ShowDoc文档工具一、ShowDoc介绍1.ShowDoc简介2.ShowDoc功能二、检查docker版本三、检查docker状态四、下载ShowDoc镜像五、创建ShowDoc容器1.创建数据目录2目录授权3.运行ShowDoc容器4.查看ShowDoc容器状态5.查... 查看详情

云原生之docker实战使用docker部署wiznote私人笔记系统

【云原生之Docker实战】使用docker部署Wiznote私人笔记系统一、Wiznote介绍1.Wiznote介绍2.Wiznote特点二、检查docker状态1.检查docker版本2.检查docker状态三、安装Wiznote1.创建数据存储目录2.运行Wiznote容器3.检查容器状态四、访问Wiznote五、Wiz... 查看详情

中秋征文|云原生之docker使用docker部署内网穿透工具frp

中秋征文|【云原生之Docker】使用docker部署内网穿透工具FRP一、卷首语二、FRP介绍1.frp简介2.frp支持的系统3.本次frp部署目的三、检查本地docker状态1.检查服务端docker状态2.检查服务端docker配置四、FRP服务器搭建1.创建frp安装目录2.编... 查看详情

云原生之docker实战使用docker部署mkdocs项目文档工具

【云原生之Docker实战】使用docker部署mkdocs项目文档工具一、mkdocs介绍1.mkdocs简介2.mkdocs特点二、检查本地环境1.检查docker版本2.检查docker状态3.检查系统版本三、下载mkdocs镜像四、使用docker-cli部署mkdocs应用1.创建数据目录2.生成项目... 查看详情

云原生之kubernetes实战使用docker作为运行时部署kubernetes集群

【云原生之kubernetes实战】使用docker作为运行时部署Kubernetes集群一、cri-dockerd介绍1.cri-dockerd简介2.cri-dockerd代码托管地址二、k8s集群环境规划三、k8s集群环境准备工作1.设置主机名及hosts文件解析2.关闭防护墙和selinux3.关闭swap4.配置... 查看详情

云原生之kubernetes实战使用docker作为运行时部署kubernetes集群

【云原生之kubernetes实战】使用docker作为运行时部署Kubernetes集群一、cri-dockerd介绍1.cri-dockerd简介2.cri-dockerd代码托管地址二、k8s集群环境规划三、k8s集群环境准备工作1.设置主机名及hosts文件解析2.关闭防火墙和selinux3.关闭swap4.配置... 查看详情

云原生之docker实战使用docker部署nacos平台

...状态三、下载Nacos安装文件四、编辑安装yaml文件五、创建数据库相关文件1.编辑数据库初始化脚本2.数据库配置文件六、修改custom.properties文件七、创建 查看详情