<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Redis on heyaohua's Blog</title><link>https://blog.heyaohua.com/tags/redis/</link><description>Recent content in Redis on heyaohua's Blog</description><image><title>heyaohua's Blog</title><url>https://blog.heyaohua.com/og-image.png</url><link>https://blog.heyaohua.com/og-image.png</link></image><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 19 Mar 2024 12:00:00 +0800</lastBuildDate><atom:link href="https://blog.heyaohua.com/tags/redis/index.xml" rel="self" type="application/rss+xml"/><item><title>Redis Docker开发环境配置指南</title><link>https://blog.heyaohua.com/posts/2024/03/redis-docker-development-guide/</link><pubDate>Tue, 19 Mar 2024 12:00:00 +0800</pubDate><guid>https://blog.heyaohua.com/posts/2024/03/redis-docker-development-guide/</guid><description>本文档详细介绍如何使用Docker搭建Redis开发环境，包括环境配置、启动方式、维护方法等内容。</description><content:encoded><![CDATA[<h1 id="redis-docker开发环境配置指南">Redis Docker开发环境配置指南</h1>
<p>本文档详细介绍如何使用Docker搭建Redis开发环境，包括环境配置、启动方式、维护方法等内容。</p>
<h2 id="目录结构">目录结构</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Redis_Docker/
</span></span><span style="display:flex;"><span>├── .env                # 环境变量配置文件
</span></span><span style="display:flex;"><span>├── README.md          # 项目说明文档
</span></span><span style="display:flex;"><span>├── config/            # 配置文件目录
</span></span><span style="display:flex;"><span>│   └── redis.conf    # Redis配置文件
</span></span><span style="display:flex;"><span>├── data/             # 数据存储目录
</span></span><span style="display:flex;"><span>└── logs/             # 日志文件目录
</span></span></code></pre></div><h2 id="配置文件说明">配置文件说明</h2>
<h3 id="1-docker-composeyml">1. docker-compose.yml</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#ff79c6">version</span>: <span style="color:#f1fa8c">&#39;3.8&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">services</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">redis</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">container_name</span>: redis-server
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">image</span>: redis:7.2
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">ports</span>:
</span></span><span style="display:flex;"><span>      - <span style="color:#f1fa8c">&#34;${REDIS_PORT}:6379&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">volumes</span>:
</span></span><span style="display:flex;"><span>      - ./data:/data
</span></span><span style="display:flex;"><span>      - ./logs:/var/log/redis
</span></span><span style="display:flex;"><span>      - ./config/redis.conf:/usr/local/etc/redis/redis.conf
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">command</span>: redis-server /usr/local/etc/redis/redis.conf
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">environment</span>:
</span></span><span style="display:flex;"><span>      - TZ=Asia/Shanghai
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">networks</span>:
</span></span><span style="display:flex;"><span>      - redis-network
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">healthcheck</span>:
</span></span><span style="display:flex;"><span>      <span style="color:#ff79c6">test</span>: [<span style="color:#f1fa8c">&#34;CMD&#34;</span>, <span style="color:#f1fa8c">&#34;redis-cli&#34;</span>, <span style="color:#f1fa8c">&#34;ping&#34;</span>]
</span></span><span style="display:flex;"><span>      <span style="color:#ff79c6">interval</span>: 10s
</span></span><span style="display:flex;"><span>      <span style="color:#ff79c6">timeout</span>: 5s
</span></span><span style="display:flex;"><span>      <span style="color:#ff79c6">retries</span>: <span style="color:#bd93f9">5</span>
</span></span><span style="display:flex;"><span>      <span style="color:#ff79c6">start_period</span>: 5s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">networks</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">redis-network</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">driver</span>: bridge
</span></span></code></pre></div><h3 id="2-env-环境变量配置">2. .env 环境变量配置</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span># Redis 配置环境变量
</span></span><span style="display:flex;"><span>REDIS_PORT=6379           # Redis端口映射
</span></span><span style="display:flex;"><span>REDIS_PASSWORD=your_password  # Redis访问密码
</span></span></code></pre></div><h3 id="3-redisconf-主要配置">3. redis.conf 主要配置</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span># 网络设置
</span></span><span style="display:flex;"><span>bind 0.0.0.0
</span></span><span style="display:flex;"><span>port 6379
</span></span><span style="display:flex;"><span>protected-mode yes
</span></span><span style="display:flex;"><span>tcp-keepalive 300
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># 基本设置
</span></span><span style="display:flex;"><span>databases 16
</span></span><span style="display:flex;"><span>loglevel notice
</span></span><span style="display:flex;"><span>logfile &#34;/var/log/redis/redis.log&#34;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># 内存设置
</span></span><span style="display:flex;"><span>maxmemory 256mb
</span></span><span style="display:flex;"><span>maxmemory-policy allkeys-lru
</span></span><span style="display:flex;"><span>maxmemory-samples 5
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># 持久化设置
</span></span><span style="display:flex;"><span>save 900 1      # 900秒内至少1个键被修改
</span></span><span style="display:flex;"><span>save 300 10     # 300秒内至少10个键被修改
</span></span><span style="display:flex;"><span>save 60 10000   # 60秒内至少10000个键被修改
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># AOF设置
</span></span><span style="display:flex;"><span>appendonly yes
</span></span><span style="display:flex;"><span>appendfilename &#34;appendonly.aof&#34;
</span></span><span style="display:flex;"><span>appendfsync everysec
</span></span></code></pre></div><h2 id="使用说明">使用说明</h2>
<h3 id="1-启动服务">1. 启动服务</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 启动服务</span>
</span></span><span style="display:flex;"><span>docker-compose up -d
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 查看服务状态</span>
</span></span><span style="display:flex;"><span>docker-compose ps
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 查看日志</span>
</span></span><span style="display:flex;"><span>docker-compose logs redis
</span></span></code></pre></div><h3 id="2-连接redis">2. 连接Redis</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 使用容器内的redis-cli</span>
</span></span><span style="display:flex;"><span>docker-compose <span style="color:#8be9fd;font-style:italic">exec</span> redis redis-cli -a your_password
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 使用主机的redis-cli（如果已安装）</span>
</span></span><span style="display:flex;"><span>redis-cli -h localhost -p <span style="color:#bd93f9">6379</span> -a your_password
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 测试连接</span>
</span></span><span style="display:flex;"><span>redis-cli -h localhost -p <span style="color:#bd93f9">6379</span> -a your_password ping
</span></span></code></pre></div><h3 id="3-停止服务">3. 停止服务</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 停止服务</span>
</span></span><span style="display:flex;"><span>docker-compose down
</span></span></code></pre></div><h2 id="数据持久化">数据持久化</h2>
<p>Redis配置了双重持久化机制：</p>
<h3 id="1-rdb持久化">1. RDB持久化</h3>
<ul>
<li>文件位置：data/dump.rdb</li>
<li>自动保存策略：</li>
<li>900秒内至少1个键被修改</li>
<li>300秒内至少10个键被修改</li>
<li>60秒内至少10000个键被修改</li>
</ul>
<h3 id="2-aof持久化">2. AOF持久化</h3>
<ul>
<li>文件位置：data/appendonly.aof</li>
<li>同步策略：everysec（每秒同步）</li>
<li>重写策略：auto-aof-rewrite-percentage 100</li>
</ul>
<h2 id="性能优化">性能优化</h2>
<h3 id="1-内存配置">1. 内存配置</h3>
<ul>
<li>maxmemory：设置为256MB</li>
<li>maxmemory-policy：使用allkeys-lru策略</li>
<li>maxmemory-samples：设置为5</li>
</ul>
<h3 id="2-网络优化">2. 网络优化</h3>
<ul>
<li>tcp-keepalive：300秒</li>
<li>tcp-backlog：511</li>
</ul>
<h3 id="3-持久化优化">3. 持久化优化</h3>
<ul>
<li>appendfsync：everysec</li>
<li>no-appendfsync-on-rewrite：no</li>
</ul>
<h2 id="安全配置">安全配置</h2>
<h3 id="1-网络安全">1. 网络安全</h3>
<ul>
<li>protected-mode：启用</li>
<li>bind：0.0.0.0（允许所有IP访问）</li>
<li>requirepass：设置访问密码</li>
</ul>
<h3 id="2-客户端限制">2. 客户端限制</h3>
<ul>
<li>maxclients：10000</li>
<li>timeout：0（不自动断开空闲连接）</li>
</ul>
<h2 id="监控和维护">监控和维护</h2>
<h3 id="1-性能监控">1. 性能监控</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span># 查看服务器信息
</span></span><span style="display:flex;"><span>redis-cli -a your_password INFO
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># 监控命令执行
</span></span><span style="display:flex;"><span>redis-cli -a your_password MONITOR
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># 查看慢查询日志
</span></span><span style="display:flex;"><span>redis-cli -a your_password SLOWLOG GET
</span></span></code></pre></div><h3 id="2-内存分析">2. 内存分析</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span># 查看内存使用情况
</span></span><span style="display:flex;"><span>redis-cli -a your_password INFO memory
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># 查看大键
</span></span><span style="display:flex;"><span>redis-cli -a your_password --bigkeys
</span></span></code></pre></div><h3 id="3-数据备份">3. 数据备份</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span># 手动触发RDB备份
</span></span><span style="display:flex;"><span>redis-cli -a your_password SAVE
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># 异步触发RDB备份
</span></span><span style="display:flex;"><span>redis-cli -a your_password BGSAVE
</span></span></code></pre></div><h2 id="常见问题处理">常见问题处理</h2>
<h3 id="1-连接失败">1. 连接失败</h3>
<ul>
<li>检查密码是否正确</li>
<li>确认端口映射是否正确</li>
<li>验证Redis服务是否正常运行</li>
</ul>
<h3 id="2-内存问题">2. 内存问题</h3>
<ul>
<li>检查maxmemory设置</li>
<li>查看内存使用情况</li>
<li>考虑调整内存策略</li>
</ul>
<h3 id="3-持久化问题">3. 持久化问题</h3>
<ul>
<li>检查磁盘空间</li>
<li>查看AOF/RDB文件状态</li>
<li>确认写入权限</li>
</ul>
<h2 id="最佳实践">最佳实践</h2>
<h3 id="1-安全建议">1. 安全建议</h3>
<ul>
<li>使用强密码</li>
<li>限制可访问的IP</li>
<li>定期更新Redis版本</li>
</ul>
<h3 id="2-性能建议">2. 性能建议</h3>
<ul>
<li>合理设置内存上限</li>
<li>选择适当的持久化策略</li>
<li>监控慢查询</li>
</ul>
<h3 id="3-运维建议">3. 运维建议</h3>
<ul>
<li>定期备份数据</li>
<li>监控系统资源</li>
<li>保持日志分析</li>
</ul>
]]></content:encoded></item></channel></rss>