HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    redis实例(redis实例化)

    发布时间:2023-04-14 02:44:45     稿源: 创意岭    阅读: 142        

    大家好!今天让创意岭的小编来大家介绍下关于redis实例的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008

    本文目录:

    redis实例(redis实例化)

    一、linux 的环境搭建(二)--redis单机环境、生产环境、集群环境的搭建

    一、目录

    1、工具

    2、安装tcl

    3、安装单机版redis

    4、把redis设置为daemon进程,每次系统启动,redis进程一起启动

    5、安装redis cluster

    二、工具

    2.1、tcl8.6.1-src.tar.gz

    2.2、ruby-2.3.1.tar.gz

    2.3、redis-4.1.1.gem

    2.4、redis-3.2.8.tar.gz

    2.5、openssl-1.0.2r.tar.gz

    三、安装tcl(安装redis必须先要安装tcl)

    3.1、把tcl8.6.1-src.tar.gz通过WinSCP上传到虚拟机中的/usr/local目录下

    四、安装单机版redis

    4.1、把redis-3.2.8.tar.gz通过WinSCP上传到虚拟机中的/usr/local目录下

    4.2、依次运行如下命令:

    tar -zxvf redis-3.2.8.tar.gz 解压文件

    cd redis-3.2.8

    make && make test && make install

    五、把redis设置为daemon进程,每次系统启动,redis进程一起启动

    5.1、将redis的utils目录下的redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_6379,6379是我们希望这个redis实例监听的端口号

    5.2、修改redis_6379脚本的第6行的REDISPORT,设置为相同的端口号(默认就是6379)

    protected-mode no 取消保护模式,保护模式只能127.0.0.1访问

    daemonize yes 让redis以daemon进程运行

    pidfile /var/run/redis_6379.pid 设置redis的pid文件位置

    bind 192.168.3.110

    port 6379 设置redis的监听端口号

    dir /var/redis/6379 设置持久化文件的存储位置

    logfile /var/log/redis/6379.log 设置日志文件位置

    5.6、启动redis,依次执行:

    cd /etc/init.d,

    chmod 777 redis_6379,赋读写执行的权限(chmod -R 777 * 是递归把该目录下的所有文件和其子文件全部赋权限)

    ./redis_6379 start 启动

    5.7、确认redis进程是否启动,ps -ef | grep redis

    5.8、让redis跟随系统启动自动启动

    5.9、重启系统,不手动启动redis,直接连接redis,可以连接上,表示配置成功

    此时一个单机版的redis的生产环境已经搭建好了,每次服务器重启,redis都会自动的启动

    六、安装redis cluster

    (redis cluster集群,要求至少3个master,去组成一个高可用,健壮的分布式的集群,每个master都建议至少给一个slave,3个master,3个slave)

    6.1、前提,我在其它机器上启动了六个redis(安装步骤都如下)

    2.2、创建三个目录:

    mkdir -p /etc/redis-cluster 存放集群配置信息,自动生成配置

    mkdir -p /var/log/redis redis日志

    mkdir -p /var/redis/7001 存放redis的rdb文件和aof文件

    6.3、将redis的utils目录下的redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_7001,7001是我们希望这个redis实例监听的端口号,并修改redis_7001配置文件中的REDISPORT=7001

    6.4、修改/etc/redis/7001.conf中的部分配置为生产环境

    6.5、完成了一个redis环境的配置,依次再配置其余五个,分别为7002、7003、7004、7005、7006,每个启动脚本内,都修改对应的端口号

    6.6、启动6个redis实例

    6.7、创建集群(需要安装ruby、rubygems)

    上述命令在部分机器上是可以直接运行完成,成功安装的,但在部分机器上运行第三条命令时会提示ruby版本太低、openssl找不到的问题,下面依次解决这两个问题:

    6.8、再次运行gem install redis命令,报出两个错误

    6.9、再次运行gem install redis命令,报出一个错误

    6.10、再次运行gem install redis命令,报出一个错误

    6.11、再次运行gem install redis命令

    [root@ceshi01 local]# gem install redis

    Successfully installed redis-4.1.1

    Parsing documentation for redis-4.1.1

    Done installing documentation for redis after 1 seconds

    WARNING: Unable to pull data from ' https://rubygems.org/' : SSL_connect returned=1 errno=0 state=error: certificate verify failed ( https://api.rubygems.org/specs.4.8.gz )

    1 gem installed

    运行成功

    此时Redis安装好,此三个工具也安装好了,这时我们来做一个Redis集群测试,在一台服务器中创建了6个Redis实例,开启6个Redis服务

    redis-trib.rb create --replicas 1 192.168.3.104:7001 192.168.3.104:7002 192.168.3.105:7003 192.168.3.105:7004 192.168.3.106:7005 192.168.3.106:7006

    [root@eshop-cache02 init.d]# redis-trib.rb create --replicas 1 192.168.3.104:7001 192.168.3.104:7002 192.168.3.105:7003 192.168.3.105:7004 192.168.3.106:7005 192.168.3.106:7006

    此时一个redis集群环境就已经搭建好了,可以通过redis-trib.rb check 192.168.3.105:7003命令查看集群几点的信息

    [root@eshop-cache02 init.d]# redis-trib.rb check 192.168.3.105:7004

    redis cluster的优点:读写分离+高可用+多master

    读写分离:每个master都有一个slave

    高可用:master宕机,slave自动被切换过去

    多master:横向扩容支持更大数据量

    二、Redis 学习总结(3) Redis 哨兵模式

    在实际开发中不会仅仅部署一个 Redis 服务器,为了获得高可用,Redis 哨兵模式 则是高可用的一种选择。

    本文先介绍下 哨兵模式,再介绍了如何在 springboot 项目中使用。

    这意味着使用 Sentinel (哨兵模式),您可以创建一个 Redis 部署,它可抵抗某些类型的故障(进行故障迁移)而无需人工干预。

    它有这些功能:

    Sentinel 的分布式特性

    Redis Sentinel 是一个分布式系统,多个 Sentinel 进程协同工作,有这些优势:

    部署前需要了解:

    三个节点的基本配置

    法定人数和仲裁

    在配置 哨兵模式时,要指定一个 quorum,它可理解为“法定人数”。

    假设有3 个 哨兵,法定人数为2。那么:

    哨兵和副本的自动发现

    Sentinel 与其他 Sentinel 保持连接,以便相互检查彼此的可用性并交换消息。

    但是,您不需要在您运行的每个 Sentinel 实例中配置其他 Sentinel 地址的列表,因为 Sentinel 使用 Redis 实例的 Pub/Sub 功能来发现正在监视相同主节点和副本的其他 Sentinel。

    类似地,您不需要配置附加到主服务器的副本地址在哪里,因为 Sentinel 会通过查询 Redis 自动发现它们。

    参考我的另一篇文章:

    一般需要三个节点,每个节点有一个 redis 和一个哨兵。

    下面再分别描述。

    我这里按三个 节点,先配置 redis 的主从复制。1个节点作为 master ,2个副本。

    配置节点1:master

    这里的 redis 作为 master 主redis,其他两个节点作为从节点。

    我的文件夹名字叫 box1,这里编辑一个 box1/redis.conf 文件,主要配置内容如下:

    配置节点2:副本

    编辑一个 box2/redis.conf 文件,主要配置内容如下:

    配置节点3:副本

    编辑一个 box3/redis.conf 文件,主要配置内容如下:

    分别启动这三个redis

    命令行执行 redis-server ,并指定 配置文件的路径参数。

    如何查看“主从复制”是否配置成功?

    使用 info replication 命令,操作如下:

    副本节点设置为只读?

    从 Redis 2.6 开始,副本已被默认设置为 只读,无需额外配置。.

    一般情况下,至少会需要三个哨兵对redis 进行监控,我们可以通过修改端口启动多个sentinel 服务。

    第一个哨兵:

    哨兵的 默认端口是 26379 ,这里不改。

    第二个哨兵:

    修改哨兵端口。

    第三个哨兵:

    修改哨兵端口。

    启动哨兵

    使用 redis-sentinel 命令,分别启动这三个哨兵

    哨兵的自动发现

    当三个哨兵都启动后,在各个哨兵的打印日志里可以看到, 三个哨兵已互相发现了彼此的存在 。

    至此,配置完毕了,我们有三个 redis,和三个哨兵,看下截图。

    模拟 master 宕机

    按 ctrl+c 停止 master ,其位于 6379 。停止后,从日志可以看到,哨兵和 redis副本先努力继续连接 6379,反复几次失败后,开始选举出新的 master。截图如下:

    至此,配置完毕。

    我们看下 springboot 项目的客户端如何配置 以访问 哨兵模式的 redis。

    Redis 哨兵支持

    对于处理高可用Redis,Spring Data Redis 已经支持Redis Sentinel,使用RedisSentinelConfiguration,如下例所示:

    Jedis 和 Lettuce 两种 redis 驱动都可以支持。

    RedisSentinelConfiguration 也可以用可以 通过 PropertySource 来设置,它允许您设置以下属性:

    配置application.yml

    比如我这里修改我的 application.yml 文件如下:

    我的配置文件示例: https://github.com/vir56k/java_demo/tree/master/redis-sentinel

    我的 springboot 配置实例: https://github.com/vir56k/java_demo/tree/master/redis-sentinel/springboot_redis_demo

    Redis官网 sentinel 介绍

    https://redis.io/topics/sentinel

    spring-data/data-redis

    https://docs.spring.io/spring-data/data-redis/docs/current/reference/html/#redis:sentinel

    https://www.cnblogs.com/jaycekon/p/6237562.html

    END

    三、Redis哨兵(Sentinel)模式

    主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。 这不是一种推荐的方式,更多时候,我们优先考虑 哨兵模式

    哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是 哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。

    这里的哨兵有两个作用

    然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式。

    用文字描述一下 故障切换(failover) 的过程。假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为 主观下线 。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为 客观下线 。这样对于客户端而言,一切都是透明的。

    配置3个哨兵和1主2从的Redis服务器来演示这个过程。

    首先配置Redis的主从服务器,修改redis.conf文件如下

    上述内容主要是配置Redis服务器,从服务器比主服务器多一个slaveof的配置和密码。

    配置3个哨兵,每个哨兵的配置都是一样的。在Redis安装目录下有一个sentinel.conf文件,copy一份进行修改

    上述关闭了保护模式,便于测试。

    有了上述的修改,我们可以进入Redis的安装目录的src目录,通过下面的命令启动服务器和哨兵

    注意启动的顺序。 首先是主机(192.168.11.128)的Redis服务进程,然后启动从机的服务进程,最后启动3个哨兵的服务进程。

    上面是通过Jedis进行使用的,同样也可以使用Spring进行配置RedisTemplate使用。

    sentinel down-after-milliseconds配置项只是一个哨兵在超过规定时间依旧没有得到响应后,会自己认为主机不可用。对于其他哨兵而言,并不是这样认为。哨兵会记录这个消息,当拥有认为主观下线的哨兵达到sentinel monitor所配置的数量时,就会发起一次投票,进行failover,此时哨兵会重写Redis的哨兵配置文件,以适应新场景的需要。

    四、Redis“气急败坏”回击:13 年来,总有人想替 Redis 换套新架构

    今年年中,一位前谷歌、前亚马逊的工程师推出了他创作的开源内存数据缓存系统 Dragonfly,用 C/C++ 编写,基于 BSL 许可(Business Source License)分发。

    根据过往的基准测试结果来看, Dragonfly 可能是世界上最快的内存存储系统,它提供了对 Memcached 和 Redis 协议的支持,但能够以更高的性能进行查询,运行时内存消耗也更少。与 Redis 相比,Dragonfly 在典型工作负载下实现了 25 倍的性能提升;单个 Dragonfly 服务器每秒可以处理数百万个请求;在 5GB 存储测试中,Dragonfly 所需的内存比 Redis 少 30%。

    作为一个开源软件,Dragonfly 在短短两个月获得了 9.2K GitHub 星,177 个 fork 分支。虽然这些年,涌现了不少类似的 Redis 兼容型内存数据存储系统,例如 KeyDB、Skytable,但是都没能像这次这么“轰动”。毕竟 Redis 诞生了十多年,这时从头开始设计一个缓存系统,可以抛弃 历史 包袱,更好地利用资源。

    为回击新冒头的 Dragonfly,Redis 的联合创始人兼 CTO Yiftach Shoolman 和 Redis Labs 的首席架构师 Yossi Gottlieb、Redis Labs 的性能工程师 Filipe Oliveira 联合发布了一篇名为《13 年后,Redis 是否需要新的架构》的文章。

    在文章中,他们特地给出了自认更加公平的 Redis 7.0 vs. Dragonfly 基准测试结果:Redis 的吞吐量比 Dragonfly 高 18% - 40%,以及一些有关 Redis 架构的观点和思考,以证明 “为什么 Redis 的架构仍然是内存实时数据存储(缓存、数据库,以及介于两者之间的所有内容)的最佳架构”。

    虽然他们强调 Redis 架构仍然是同类最佳,但也没法忽视 Dragonfly 这些新软件提供的一些新鲜、有趣的想法和技术,Redis 表示其中的一些甚至有可能在未来进入 Redis(比如已经开始研究的 io_uring 、更现代的 dictionaries、更有策略地使用线程等)。

    另外,Redis 指出 Dragonfly 基准测试的比较方法 “不能代表 Redis 在现实世界中的运行方式” 。对此,Reddit 上有网友反驳称:

    还有人表示,这篇文章是 Redis 团队在有礼貌地否认“Dragonfly 是最快的缓存系统”,但更多网友表示,Redis 发文章进行“回击”,就已经代表他们的营销部门输了:

    我们当然一直在寻求为 Redis 提升性能、扩充功能的创新方向,但这里我们想聊聊自己的观点和思考,阐释 Redis 时至今日为何仍是最出色的实时内存数据存储(包括缓存、数据库以及介于二者之间的一切)方案之一。

    接下来,我们将重点介绍 Redis 对于速度和架构差异的观点,再以此为基础做出比较。在文章的最后,我们还会提供基准测试结果、与 Dragonfly 项目的详尽性能比较信息,欢迎大家自行对比参考。

    Dragonfly 基准测试其实是将独立单进程 Redis 实例(只能使用单一核心)与多线程 Dragonfly 实例(可以使用虚拟机 / 服务器上的全部可用核心)进行比较。很明显,这样的粗暴比较并不能代表 Redis 在现实场景下的运行状态。作为技术构建者,我们希望更确切地把握自有技术同其他方案间的差异,所以这里我们做了一点公平性调整:将具有 40 个分片的 Redis 7.0 集群(可使用其中的大部分实例核心)与 Dragonfly 团队在基准测试中使用的最大实例类型(AWS c4gn.16xlarge)进行性能比较。

    在这轮测试中,我们看到 Redis 的吞吐量比 Dragonfly 要高出 18% 至 40%,而这还仅仅只用到全部 64 个 vCore 中的 40 个。

    在我们看来,每一位多线程项目的开发者在立项之前,都会根据以往工作中经历过的痛点来指导架构决策。我们也承认,在多核设备上运行单一 Redis 进程(这类设备往往提供几十个核心和数百 GB 内存)确实存在资源无法充分利用的问题。但 Redis 在设计之初也确实没有考虑到这一点,而且众多 Redis 服务商已经拿出了相应的解决方案,借此在市场上占得一席之地。

    Redis 通过运行多个进程(使用 Redis 集群)实现横向扩展,包括在单一云实例背景下也是如此。在 Redis 公司,我们进一步拓展这个概念并建立起 Redis Enterprise。Redis Enterprise 提供管理层,允许用户大规模运行 Redis,并默认启用高可用性、即时故障转移、数据持久与备份等功能。

    下面,我们打算分享幕后使用的一些原则,向大家介绍我们如何为 Redis 的生产应用设计良好的工程实践。

    通过在每个虚拟机上运行多个 Redis 实例,我们可以:

    我们不允许单一 Redis 进程的大小超过 25 GB(运行 Redis on Flash 时上限为 50 GB)。如此一来,我们就能:

    以横向扩展的方式灵活运行内存数据存储,是 Redis 获得成功的关键。下面来看具体原因:

    我们仍然欣赏由社区提出的种种有趣思路和技术方案。其中一部分有望在未来进入 Redis(我们已经开始研究 io_uring、更现代的字典、更丰富的线程使用策略等)。但在可预见的未来,我们不会放弃 Redis 所坚守的无共享、多进程等基本架构原则。这种设计不仅具备最佳性能、可扩展性和弹性,同时也能够支持内存内实时数据平台所需要的各类部署架构。

    附录:Redis 7.0 对 Draonfly 基准测试细节

    版本:

    目标:

    客户端配置:

    资源利用与配置优化:

    最后,我们还发现 Redis 和 Dragonfly 都不受网络每秒数据包或传输带宽的限制。我们已经确认在 2 个虚拟机间(分别作为客户端和服务器,且均使用 c6gn.16xlarge 实例)使用 TCP 传递约 300 B 大小的数据包负载时,可以让每秒数据包传输量达到 1000 万以上、传输带宽超过 30 Gbps。

    单 GET 通道延迟低于 1 毫秒:

    30 条 GET 通道:

    单 SET 通道延迟低于 1 毫秒:

    30 条 SET 通道:

    用于各变体的 memtier_benchmark 命令:

    单 GET 通道延迟低于 1 毫秒

    30 条 GET 通道

    单 SET 通道延迟低于 1 毫秒

    30 条 SET 通道

    在本次比较测试中,我们在客户端(用于运行 memtier_benchmark)和服务器(用于运行 Redis 和 Dragonfly)使用了相同的虚拟机类型,具体规格为:

    参考链接:

    https://redis.com/blog/redis-architecture-13-years-later/

    https://www.reddit.com/r/programming/comments/wiztpx/redis_hits_back_at_dragonfly/

    原文链接:https://www.infoq.cn/article/AlF5NIhHdskayl0MTyQG

    以上就是关于redis实例相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    appstore游戏排行榜(appstore游戏排行榜七麦)

    sorelle餐饮品牌设计(餐饮品牌设计有限公司)

    wordpress首页修改(wordpress自定义首页)

    手要排行榜(手排行榜2021前十名最新)

    香港女富豪排行榜(香港女富豪排行榜出炉)