【2023】使用docker方式部署redis

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 【2023】使用docker方式部署redis

* 使用Docker方式安装Redis

提前部署docker环境,这一点不多说,请参考docker安装文章,本文安装Redis版本为6.0

* Redis是什么?

Redis是一种内存数据结构存储系统,也被称为远程字典服务器,是一款开源的高性能键值对存储数据库。

它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,可以满足各种应用的需求。

Redis支持多种扩展方式,可以通过主从复制、哨兵、集群等方式来实现高可用和高性能。

Redis的特点包括高性能、数据持久化、支持事务、发布/订阅、Lua脚本等。

因此,Redis被广泛应用于缓存、消息队列、计数器、排行榜、实时消息等场景。

* 为什么要用Redis

Redis是一种高性能的键值对存储系统,因此可以用于处理许多用例,包括:

  1. 缓存:Redis可以将经常使用的数据缓存在内存中,以提高访问速度,从而加快应用程序的响应时间。
  2. 会话管理:Redis可以存储会话数据,这样在负载均衡器后的多个服务器之间共享会话数据就更加容易了。
  3. 计数器:由于Redis的高性能和原子性操作,在处理计数器等应用时,Redis是非常有用的。
  4. 队列:Redis可以被用来实现消息队列系统,以便于在应用程序的不同部分之间传递消息。
  5. 排行榜:Redis可以用于排序,例如计算一个用户在社交网络上的排名。

总之,Redis可以被用于任何需要高性能、可扩展性和灵活性的应用程序。

1.下载要使用的Redis镜像

可以使用docker pull redis命令获取镜像,默认为最新版。也可以使用docker pull redis:标签下载指定版本镜像。

可以在docker镜像仓库获取redis镜像

docker pull redis:6.0

2.使用docker启动Redis容器

docker run -itd --name redis-01 -p 6379:6379 redis:6.0
  • it表示在终端交互式操作
  • d表示在后台运行
  • –name指定容器名称
  • -p表示容器端口映射到宿主机端口

通过docker ps命令可以查看启动的容器

# docker ps
CONTAINER ID   IMAGE       COMMAND                   CREATED         STATUS         PORTS                                       NAMES
ea3ca1926781   redis:6.0   "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp   redis-01

通过docker logs观察启动情况

# docker logs redis-01
1:C 03 May 2023 01:29:00.767 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 03 May 2023 01:29:00.767 # Redis version=6.0.16, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 03 May 2023 01:29:00.767 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 6.0.16 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               
1:M 03 May 2023 01:29:00.768 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1:M 03 May 2023 01:29:00.768 # Server initialized
1:M 03 May 2023 01:29:00.769 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo madvise > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled (set to 'madvise' or 'never').
1:M 03 May 2023 01:29:00.769 * Ready to accept connections

如果出现上述日志代表redis启动成功,如果失败则查看具体原因

3.通过exec进入Redis容器

启动容器后,可以使用docker exec命令进入到容器内部,执行相关操作

docker exec -it redis-01 /bin/bash
  • exec表示在运行的容器中执行命令
  • it表示以终端交互的方式执行命令
  • /bin/bash表示需要指定的命令
  • 运行结果如下所示:
[root@localhost ~]# docker exec -it redis-01 /bin/bash
root@ea3ca1926781:/data# 

进入容器后可通过redis-cli命令连接容器内的redis服务器,可通过set创建变量,get获取变量的值

root@ea3ca1926781:/data# redis-cli
127.0.0.1:6379> set val 1
OK
127.0.0.1:6379> get val
"1"
127.0.0.1:6379> 

可使用exit命令退出redis服务器

127.0.0.1:6379> exit
root@ea3ca1926781:/data# 

如果要退出容器则再输入一次exit命令即可。

可通过redis-cli --versionredis-server --version命令查看redis客户端和服务端版本

root@ea3ca1926781:/data# redis-cli --version
redis-cli 6.0.16
root@ea3ca1926781:/data# redis-server --version
Redis server v=6.0.16 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=281f24c34ac9a20

4.控制Redis服务器

可通过docker [start|stop|restart] redis-01控制redis服务器状态

5.Redis服务端和客户端

Redis是基于键值对存储的NoSQL数据库,其中的数据是存储在Redis服务器里的。

一个Redis服务器可同时与多个客户端创建连接,每个客户端都能像服务器发送命令请求,而服务器在收到命令请求后能向客户端返回结果。

可通过redis-cli命令创建客户端

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
8天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
61 26
|
1月前
|
人工智能 API 数据安全/隐私保护
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
NextChat 是一个可以在 GitHub 上一键免费部署的私人 ChatGPT 网页应用,支持 GPT3、GPT4 和 Gemini Pro 模型。该项目在 GitHub 上获得了 63.8k 的 star 数。部署简单,只需拉取 Docker 镜像并运行容器,设置 API Key 后即可使用。此外,NextChat 还提供了预设角色的面具功能,方便用户快速创建对话。
137 22
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
|
15天前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
22 2
|
21天前
|
Java Linux Docker
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
39 3
|
25天前
|
监控 NoSQL 网络协议
【Azure Redis】部署在AKS中的应用,连接Redis高频率出现timeout问题
查看Redis状态,没有任何异常,服务没有更新,Service Load, CPU, Memory, Connect等指标均正常。在排除Redis端问题后,转向了AKS中。 开始调查AKS的网络状态。最终发现每次Redis客户端出现超时问题时,几乎都对应了AKS NAT Gateway的更新事件,而Redis服务端没有任何异常。因此,超时问题很可能是由于NAT Gateway更新事件导致TCP连接被重置。
|
28天前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
1月前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
1月前
|
Docker 微服务 容器
使用Docker Compose实现微服务架构的快速部署
使用Docker Compose实现微服务架构的快速部署
56 1
|
25天前
|
持续交付 开发者 Docker
掌握Docker容器化技术,加速软件开发与部署
掌握Docker容器化技术,加速软件开发与部署
42 0