Docker安装Redis(1)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 本文介绍Docker安装Redis 6.0.8的完整流程,涵盖单机版与生产级部署。通过容器卷映射配置文件和数据目录,实现数据持久化与自定义密码、远程访问等设置。同时解析Redis集群三大分布式存储算法:哈希取余、一致性哈希与哈希槽,重点说明其原理、优缺点及适用场景,助力构建高效稳定的Redis服务。

Docker安装Redis

以 Redis 6.0.8 为例:
docker pull redis:6.0.8

单机版安装
简单版 Redis
简单的启动Redis容器:
docker run -p 6379:6379 -d redis:6.0.8

简单版没有配置容器卷映射,当容器被删除时数据无法恢复。

实际应用版Redis
配置文件、数据文件都和容器卷进行映射。

步骤:

  1. 宿主机创建目录/app/redis
  2. 在/app/redis下创建文件redis.conf,主要修改以下几项配置

    开启密码验证(可选)

    requirepass 123

允许redis外地连接,需要注释掉绑定的IP

bind 127.0.0.1

关闭保护模式(可选)

protected-mode no

注释掉daemonize yes,或者配置成 daemonize no。因为该配置和 docker run中的 -d 参数冲突,会导致容器一直启动失败

daemonize no

开启redis数据持久化, (可选)

appendonly yes

即最后的配置文件为:

  1. 启动docker容器:(因为要使用自定义的配置文件,所以需要指定容器运行的命令为redis-server 容器内配置文件路径)
    docker run -d -p 6379:6379 --name redis --privileged=true \
       -v /app/redis/redis.conf:/etc/redis/redis.conf \
       -v /app/redis/data:/data \
       redis:6.0.8 \
       redis-server /etc/redis/redis.conf
    

集群存储算法
分布式存储算法

分布式存储的常见算法:
● 哈希取余算法分区
● 一致性哈希算法分区
● 哈希槽算法分区

哈希取余算法

算法描述:hash(key) % N(其中,key是要存入Redis的键名,N是Redis集群的机器台数)。用户每次读写操作,都是根据传入的键名经过哈希运算,对机器台数取余决定该键存储在哪台服务器上。

优点:简单直接有效,只需要预估好数据规划好节点,就能保证一段时间的数据支撑。使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡+分而治之的作用。

缺点:原来规划好的节点,如果进行了扩容或者缩容,导致节点有变动,映射关系需要重新进行计算。在服务器个数固定不变时没问题,如果需要弹性扩容或者故障停机的情况下,原来取模公式中的 N就会发生变化,此时经过取模运算的结果就会发生很大变化,导致根据公式获取的服务器变得不可控。

一致性哈希算法

算法背景:一致性哈希算法是为了解决哈希取余算法中的分布式缓存数据变动和映射问题。当服务器个数发生变化时,尽量减少影响到客户端与服务器的映射关系。

算法描述:
一致性哈希算法必然有个hash函数并按照算法产生Hash值,这个算法的所有可能哈希值会构成一个全量集,这个集合可以成为一个Hash区间[0, 2^32 - 1],这是一个线性空间。但是在这个算法中,我们通过适当的逻辑控制将它首尾相连(0 = 2^32),这样让它逻辑上形成了一个环形空间。

它也是按照使用取模的方式。前面的哈希取余算法是对节点个数进行取模,而一致性哈希算法是对 2^32取模。

简单来说,一致性Hash算法将整个哈希值空间组成一个虚拟的圆环。如假设某个哈希函数H的值空间为 0到2^32 - 1(即哈希值是一个32位无符号整形),整个哈希环如下图:整个空间按顺时针方向组织,圆环的正上方的点代表0,0点右侧的第一个点代表1,以此类推,2、3、4.......直到2^32 - 1,也就是说0点左侧的第一个点代表 2^32 - 1。0 和 2^32 - 1在零点钟方向重合,我们把这个由 2^32个点组成的圆环称为Hash环。

相关文章
|
数据采集 存储 Web App开发
Python爬虫系列8-抓取快乐8、刮刮乐、双色球等中奖数据分析规律
人在绝大多数情况下,只要稍微有那么一点的退路,有那么一点余地,就可以成为逃避的借口和理由。努力装装样子,然后给自己一个台阶下,安慰自己说,“你看我已经很努力了,还是不行,那就算了吧”。 老话说得好:只有主动追求的东西才能到手;只要你想做,全世界都会帮你;只要你不想做,一只蚊子都能拦住你。虽说未来可期,但如果你连相信自己的勇气都没有,还有什么资格得到更好的呢。对吧!
3943 0
Python爬虫系列8-抓取快乐8、刮刮乐、双色球等中奖数据分析规律
|
网络协议 Linux 虚拟化
桥接方式: vmware虚拟机安装的centos7连接外网教程
桥接方式: vmware虚拟机安装的centos7连接外网教程
2259 0
桥接方式: vmware虚拟机安装的centos7连接外网教程
|
6月前
|
存储 关系型数据库 MySQL
阿里云数据库产品支持免费试用吗?最新可试用数据库规格信息、配置及可试用人群参考
2026年阿里云数据库试用活动的核心内容参考,涵盖26款可试用数据库产品,包括RDS MySQL、Tair、PolarDB、AnalyticDB等主流类型,覆盖Serverless、集群版、多模态等多种形态。活动支持个人与企业认证用户,适用场景涵盖开发测试、生产环境、AI集成、实时分析等。新用户可享免费试用额度及后续折扣。
1614 6
|
3月前
|
人工智能 Java API
【SpringAIAlibaba新手村系列】(5)Prompt 提示词基础与多种消息类型
本章详解Spring AI 1.1.2中Prompt核心机制:以System/User/Assistant/Tool四类消息构建结构化提示,强调“角色决定语义”;涵盖多模型配置、链式API与底层Message组装两种实践方式,并给出系统消息设计最佳实践。
899 7
|
3月前
|
人工智能 JSON Java
【SpringAIAlibaba新手村系列】(7)结构化输出与对象映射
本文详解 Spring AI 结构化输出功能,通过 Java Record 与 .entity() 方法,实现 AI 的 JSON 响应自动映射为 Java 对象,解决纯文本难以集成的问题。文中还对比了 Lambda 写法并提供 Prompt 设计最佳实践。
597 4
|
6月前
|
机器学习/深度学习 人工智能 算法
告别关键词搜索:手把手教你用向量数据库,解锁大模型的“最新”知识
本文用通俗语言详解向量数据库原理与实践:它通过“语义向量化”实现按意思而非关键词检索,是RAG系统中连接大模型与私有数据的核心“外挂大脑”。附Faiss+Sentence-Transformers实战Demo,10分钟搭建可运行的语义检索系统。(239字)
873 0
|
6月前
|
Ubuntu 关系型数据库 MySQL
基于Ubuntu 24编译部署开源PolarDB-X
作者介绍: 韦玮 浙江宇视科技有限公司分布式存储开发工程师 浙江宇视科技有限公司是全球AIoT产品、解决方案与全栈式能力提供商,以“ABCI”(AI人工智能、BigData大数据、Cloud云计算、IoT物联网)技术为核心。
|
4月前
|
弹性计算 人工智能 Linux
阿里云服务器使用指南:2026新手入门指南,一篇文章全搞定
2026阿里云新手指南:详解轻量应用服务器与ECS区别,手把手教你三步购买(含¥38/年秒杀技巧)、网页/终端远程登录、WordPress/OpenClaw一键部署,并附防火墙配置、密码修改等安全设置及常见问题排查方案。
745 1
|
11月前
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
7月前
|
缓存 Ubuntu Linux
02-Docker安装 CentOS安装Docker
本文详细介绍在CentOS和Ubuntu系统上安装、配置及卸载Docker的完整步骤,包括配置阿里云镜像加速、离线安装方法、设置开机自启与命令补全,助你快速部署并测试Docker环境。
413 0