Ubuntu 22.04(WSL2)使用Docker安装Redis

Ubuntu 22.04(WSL2)使用Docker安装Redis

本教程将指导您在运行于WSL2的Ubuntu 22.04上通过Docker安装Redis 7.4.3。您将获得一个配置了自定义设置、持久化存储和安全选项的Redis实例。

前提条件

  • WSL2上已安装Ubuntu 22.04。
  • WSL2上已安装并运行Docker,确保Docker守护进程已启动。
  • 熟悉基本的终端命令。

步骤1:创建Redis目录

为了确保数据持久化和配置管理,创建用于存储Redis数据和配置文件的目录。

# /home/redis/data:存储Redis数据文件(如dump.rdb、appendonly.aof)
# /home/redis/conf:存储Redis配置文件
mkdir -p /home/redis/data /home/redis/conf

步骤2:准备Redis配置文件

/home/redis/conf目录下创建redis.conf文件,内容如下。每个参数均附带注释说明其作用。

sudo touch redis.conf
chmod -R 777 /home/redis/*
# 允许来自任何IP地址的连接,WSL2网络需要此设置
bind 0.0.0.0
# 设置认证密码,替换your_password为强密码
requirepass your_password
# 禁用保护模式以允许外部连接
protected-mode no
# TCP连接队列长度,建议值511
tcp-backlog 511
# 客户端空闲超时时间(秒),0表示无限制
timeout 0
# TCP保活时间(秒),检测客户端连接状态
tcp-keepalive 300
# 是否以守护进程方式运行,Docker环境设置为no
daemonize no
# 是否启用系统监督,Docker环境设置为no
supervised no
# 日志级别,notice为标准信息级别
loglevel notice
# 日志文件路径,空字符串表示输出到标准输出
logfile ""
# 数据库数量,默认为16,此处设置为30
databases 30
# 是否在启动时显示Redis logo
always-show-logo yes
# 快照保存策略:900秒内至少1次更改触发
save 900 1
# 快照保存策略:300秒内至少10次更改触发
save 300 10
# 快照保存策略:60秒内至少10000次更改触发
save 60 10000
# 后台保存失败时是否停止写入
stop-writes-on-bgsave-error yes
# 是否启用RDB文件压缩
rdbcompression yes
# 是否在RDB文件中启用校验和
rdbchecksum yes
# RDB文件名
dbfilename dump.rdb
# 数据文件存储目录,映射到容器/data
dir /data
# 主从复制中,从节点是否提供过期数据
replica-serve-stale-data yes
# 从节点是否为只读
replica-read-only yes
# 是否启用无磁盘同步
repl-diskless-sync no
# 是否禁用TCP_NODELAY,影响延迟和吞吐量
repl-disable-tcp-nodelay no
# 从节点优先级,用于主节点选举
replica-priority 100
# 是否启用惰性删除以释放内存
lazyfree-lazy-eviction no
# 是否在键过期时启用惰性删除
lazyfree-lazy-expire no
# 是否在删除服务端键时启用惰性删除
lazyfree-lazy-server-del no
# 是否在从节点刷新时启用惰性删除
replica-lazy-flush no
# 是否启用追加日志文件(AOF)持久化
appendonly yes
# AOF文件名
appendfilename "appendonly.aof"
# 是否在AOF重写时禁用fsync
no-appendfsync-on-rewrite no
# AOF自动重写触发百分比
auto-aof-rewrite-percentage 100
# AOF自动重写最小大小
auto-aof-rewrite-min-size 64mb
# 是否加载截断的AOF文件
aof-load-truncated yes
# 是否在AOF中使用RDB前缀
aof-use-rdb-preamble yes
# Lua脚本执行时间限制(毫秒)
lua-time-limit 5000
# 慢查询日志最大条目数
slowlog-max-len 128
# 键空间事件通知,空字符串表示禁用
notify-keyspace-events ""
# Hash数据结构使用ziplist的键最大数量
hash-max-ziplist-entries 512
# Hash数据结构使用ziplist的值最大长度
hash-max-ziplist-value 64
# List数据结构使用ziplist的最大大小
list-max-ziplist-size -2
# List数据结构压缩深度
list-compress-depth 0
# Set数据结构使用intset的最大条目数
set-max-intset-entries 512
# Zset数据结构使用ziplist的键最大数量
zset-max-ziplist-entries 128
# Zset数据结构使用ziplist的值最大长度
zset-max-ziplist-value 64
# HyperLogLog稀疏表示的最大字节数
hll-sparse-max-bytes 3000
# Stream节点最大字节数
stream-node-max-bytes 4096
# Stream节点最大条目数
stream-node-max-entries 100
# 是否启用主动重哈希
activerehashing yes
# 服务器运行频率(Hz),影响性能
hz 10
# 是否启用动态Hz调整
dynamic-hz yes
# 是否启用AOF重写的增量fsync
aof-rewrite-incremental-fsync yes
# 是否启用RDB保存的增量fsync
rdb-save-incremental-fsync yes
# 最大内存限制,1GB(1073741824字节)
maxmemory 1073741824
# 内存满时淘汰策略:使用LRU算法淘汰所有键
maxmemory-policy allkeys-lru

步骤3:运行Redis Docker容器

使用以下Docker命令启动Redis容器,加载指定的配置和卷挂载。

# -d:后台运行容器
# --name redis:容器命名为redis
# -p 6379:6379:映射主机端口6379到容器端口6379
# --restart unless-stopped:容器自动重启,除非手动停止
# -v /home/redis/data:/data:挂载主机数据目录到容器/data
# -v /home/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf:挂载配置文件
# redis:7.4.3:使用Redis 7.4.3镜像
# redis-server /usr/local/etc/redis/redis.conf:使用指定配置文件启动Redis
docker run -d --name redis -p 6379:6379 --restart unless-stopped \-v /home/redis/data:/data \-v /home/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \redis:7.4.3 redis-server /usr/local/etc/redis/redis.conf

步骤4:验证安装

  1. 检查容器是否正在运行:

    # 显示运行中的容器列表
    docker ps
    

    您应该看到redis容器在列表中。

  2. 使用redis-cli连接到Redis:

    # 进入容器并启动redis-cli
    docker exec -it redis redis-cli
    
  3. 使用密码认证:

    # 使用配置文件中的密码进行认证
    AUTH your_password
    
  4. 测试Redis功能,设置并获取一个键:

    # 设置键值对
    SET testkey "Hello, Redis!"
    # 获取键值
    GET testkey
    

    如果成功,将输出"Hello, Redis!"

步骤5:从主机访问Redis

由于WSL2的网络配置复杂,您可能需要获取WSL2实例的IP地址以从Windows主机连接。

  1. 查看WSL2的IP地址:

    # 显示eth0网卡的IP地址
    ip addr show eth0 | grep inet
    

    找到IP地址(如172.18.0.1)。

当然,如果跟之前的一样,windows操作系统的C:\Users\Administrator\.wslconfig配置了networkingMode=mirrored,我们也可以直接使用 127.0.0.1或者是localhost

  1. 在Windows主机上使用redis-cli或Redis客户端连接到<WSL2_IP>:6379,并使用密码认证。

故障排除

  • 容器无法启动:

    查看日志:

    # 显示容器日志
    docker logs redis
    

    确保redis.conf 文件权限正确:

    # 设置配置文件权限
    chmod 644 /home/redis/conf/redis.conf
    
  • 连接问题:确认6379端口未被防火墙阻止,且redis.conf中设置了bind 0.0.0.0

  • 权限错误:
    确保/home/redis 目录对Docker用户可写:

    # 设置目录权限(测试用)
    chmod -R 777 /home/redis
    

结论

您已在Ubuntu 22.04(WSL2)上通过Docker成功运行Redis 7.4.3实例,配置了持久化存储、安全密码和内存限制。此设置适用于开发或小型生产环境。如需进一步自定义,请参考Redis官方文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/905346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈 Redis 数据类型

浅谈 Redis 数据类型 &#xff08;一&#xff09;String 类型 Redis 的 String 类型 是二进制安全的&#xff0c;可以用来存储 文本字符串、int 类型数据和 bitmap 位图 等数据。 1. 字符串操作 适用于存储 文本、JSON、序列化数据 等任意二进制安全的内容 命令作用示例SET设…

Day1 时间复杂度

一 概念 在 C 中&#xff0c;时间复杂度是衡量算法运行时间随输入规模增长的趋势的关键指标&#xff0c;用于评估算法的效率。它通过 大 O 表示法&#xff08;Big O Notation&#xff09; 描述&#xff0c;关注的是输入规模 n 趋近于无穷大时&#xff0c;算法时间增长的主导因…

PAC文件:智能代理配置的瑞士军刀

在日常上网和企业网络环境中&#xff0c;我们经常需要配置代理服务器来访问特定资源、增强安全性或管理网络流量。Windows和macOS系统自带的代理配置通常提供全局代理或简单的排除列表&#xff0c;这在某些复杂场景下显得不够灵活。例如&#xff0c;我们可能只想代理某个特定的…

获取高德地图JS API的安全密钥和Key的方法

要使用高德地图JavaScript API&#xff0c;您需要获取API Key和安全密钥(securityJsCode)。以下是获取步骤&#xff1a; 1. 注册高德开放平台账号 首先访问高德开放平台&#xff0c;如果没有账号需要先注册。 2. 创建应用获取Key 登录后进入"控制台" 点击"应…

携程酒店 phantom-token token1004 分析

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 部分python代码 搞APP搞的心态有点崩…

小红书多账号运营效率优化:技术方案与自动化实践

目录 一、效率瓶颈与流程优化方向 二、技术实现方案与效率提升路径 1. 多账号统一管理&#xff1a;环境隔离与批量操作 2. 自动化任务设计&#xff1a;RPA与脚本化执行 四、效果验证与数据对比 五、总结与开源工具推荐 六、下载地址&#xff1a; 一、效率瓶颈与流程优化…

FastDDS Transport功能模块初步整理

一. 总体结构 二. 主要类的功能 2.1 TransportDescriptor和TransportInterface ​ FastDDS中整个Transport类的设计遵循的是设计模式中的建造者模式&#xff0c;其中&#xff0c;TransportDescriptor就是建造者&#xff0c;而TransportInterface则是建造出来的产品。 ​ Tra…

zabbix最新版本7.2超级详细安装部署(一)

如果文章对你有用&#xff0c;请留下痕迹在配置过程中有问题请及时留言&#xff0c;本作者可以及时更新文章 目录 1、提前准备环境 2、zabbix7.2安装部署 3、安装并配置数据库 4、为Zabbix server配置数据库 5、为Zabbix前端配置PHP 6、启动Zabbix server和agent进程 7、关闭防…

CodeBlocks调试报错

尝试打断点&#xff0c;并且点击红色箭头启动debugger时&#xff0c;控制台报错 Active debugger config: GDB/CDB debugger:Default Building to ensure sources are up-to-date Selecting target: Debug Adding source dir: C:\Users\Lenovo\Desktop\exercise\ Adding source…

Manus 开放注册:AI 智能体领域的新起点

2025 年 5 月 13 日成为了一个具有特殊意义的日子 —— 备受瞩目的 AI 智能体平台 Manus&#xff08;Manus&#xff09;正式宣布开放注册。这一消息犹如一颗重磅炸弹&#xff0c;瞬间在全球科技圈引起了广泛关注和热烈讨论。在此之前&#xff0c;Manus 一直以其独特的魅力和极高…

车载网关作为车辆网络系统的核心枢纽

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 钝感力的“钝”&#xff0c;不是木讷、迟钝&#xff0c;而是直面困境的韧劲和耐力&#xff0c;是面对外界…

俄罗斯方块算法2025.5.10

问题描述 俄罗斯方块&#xff08;Tetris&#xff09;作为风靡全球38年的现象级益智游戏&#xff0c;其简单易学但难于精通的特性使其成为游戏史上的不朽经典。以下是其核心游戏规则解析及我们的要求&#xff1a; 游戏界面由20行10列的可视区域组成&#xff0c;7种不同形状的四…

Femap许可网络配置

电磁仿真领域&#xff0c;Femap以其卓越的性能和广泛的应用场景&#xff0c;成为众多工程师和科研人员的首选工具。为了满足多用户协作的需求&#xff0c;Femap提供了灵活的网络配置方案。本文将详细介绍Femap许可网络配置的方法和优势&#xff0c;帮助您轻松实现多用户高效协作…

计算机视觉----时域频域在图像中的意义、傅里叶变换在图像中的应用、卷积核的频域解释

1、时域&#xff08;时间域&#xff09;——自变量是时间,即横轴是时间,纵轴是信号的变化。其动态信号x&#xff08;t&#xff09;是描述信号在不同时刻取值的函数。 2、频域&#xff08;频率域&#xff09;——自变量是频率,即横轴是频率,纵轴是该频率信号的幅度,也就是通常说…

主流高防服务器技术对比与AI防御方案实战

1. 高防服务器核心能力对比 当前市场主流高防服务商&#xff08;如阿里云、腾讯云、华为云&#xff09;的核心防御能力集中在流量清洗与静态规则防护&#xff0c;但面临以下挑战&#xff1a; 静态防御瓶颈&#xff1a;传统方案依赖预定义规则&#xff0c;对新型攻击&#xff…

常时间运行的程序 导致系统卡顿 自动监控系统CPU和内存利用率 自动选择 内存回收 软件重启 电脑重启

长时间运行安防系统&#xff0c;导致CPU或内存利用率超80%&#xff0c;使得电脑变的缓慢、卡顿的问题。定时获取CPU和内存利用率的数据&#xff0c;在不同时间段&#xff08;如凌晨与平时&#xff09;&#xff0c;根据利用率的不同的阈值&#xff0c;进行&#xff1a;内存回收(…

OpenCV播放摄像头视频

OpenCV计算机视觉开发实践&#xff1a;基于Qt C - 商品搜索 - 京东 播放摄像头视频和播放视频文件类似&#xff0c;也是通过类VideoCapture来实现&#xff0c;只不过调用open的时候传入的是摄像头的索引号。如果计算机安装了一个摄像头&#xff0c;则open的第一个参数通常是0&…

操作系统:内存管理

目录 1、主要目标 2、核心概念和技术 2.1 物理内存与虚拟内存 2.2 内存分页机制 2.3 页面置换算法 3、监控与性能优化 3.1 查看物理内存 3.2 查看虚拟内存 3.3 性能问题 1> 内存不足&#xff08;OOM&#xff09; 2> 内存泄漏 3> 内存碎片 3.4 性能优化策…

专题四:综合练习( 找出所有子集的异或总和再求和)

以leetcode1863题为例 题目分析&#xff1a; 找到每个子集&#xff0c;然后子集中的元素异或之后全部相加 算法原理分析&#xff1a; 画决策树&#xff1a;第一层为这个子集有一个元素 第二层这个子集有两个元素 从上往下罗列&#xff0c;把所有子集都罗列出来&#xf…

【python】—conda新建python3.11的环境报错

1.报错 conda create -n py3.11 python3.11 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ Collecting package metadata: done Solving environment: failed PackagesNotFoundError: The following packages are not available from current channel…