Redis 部署及介绍

2023-05-16

1、安装单机版redis

[root@redis-master ~]# mkdir -p /data/application #创建工作目录
[root@redis-master ~]# wget http://download.redis.io/releases/redis-4.0.9.tar.gz #下载redis
[root@redis-master ~]# tar xzf redis-4.0.9.tar.gz -C /data/application/ #指定解压到创建的文件夹里
[root@redis-master ~]# cd /data/application/
[root@redis-master application]# mv redis-4.0.9/ redis #改名
[root@redis-master application]# cd redis/
[root@redis-master redis]# yum install -y gcc gcc-c++ #安装编译工具 要先安装编译工具在安装
[root@redis-master redis]# make #安装
注:如果报错请将刚才解压的安装包删除掉,再次重新解压并进行make安装即可。
[root@redis-master redis]# cp redis.conf redis.conf.bak
[root@redis-master redis]# vim redis.conf —修改如下
bind 192.168.246.202  #只监听内网IP 就是允许谁访问 如允许所有人访问就0.0.0.0
daemonize yes     #开启后台模式将on改为yes
slave-read-only no #这个是只读的权限把yes修改为no。
timeout 300      #连接超时时间
port 6379 #端口号
dir /data/application/redis/data  #本地数据库存放持久化数据的目录该目录—待会要手动创建
pidfile /var/run/redis_6379.pid  #定义pid文件
logfile /var/log/redis.log  #定义log文件
创建存放数据的目录
[root@redis-master redis]# mkdir /data/application/redis/data
配置redis为systemctl启动
[root@redis-master redis]# cd /usr/lib/systemd/system
[root@redis-master system]# vim redis.service
[Unit]
Description=Redis
After=network.target

[Service]
ExecStart=/data/application/redis/src/redis-server /data/application/redis/redis.conf --daemonize no
ExecStop=/data/application/redis/src/redis-cli -h 127.0.0.1 -p 6379 shutdown

[Install]
WantedBy=multi-user.target

参数详解:
• [Unit] 表示这是基础信息
• Description 是描述
• After 是在那个服务后面启动,一般是网络服务启动后启动

• [Service] 表示这里是服务信息
• ExecStart 是启动服务的命令
• ExecStop 是停止服务的指令

• [Install] 表示这是是安装相关信息
• WantedBy 是以哪种方式启动:multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。

启动服务:
[root@redis-master system]# systemctl daemon-reload
[root@redis-master system]# systemctl start redis.service

登陆redis
[root@redis-master system]# cd /data/application/redis/src/
[root@redis-master src]# ./redis-cli -h 192.168.246.202 -p 6379
192.168.246.202:6379> ping #测试redis是否可以用
PONG
192.168.246.202:6379> set name newrain #设置key–name,并设置值
OK
192.168.246.202:6379> get name #获取到key
“newrain”
192.168.246.202:6379>
单机版redis已经部署完成。将ip和端口发给开发就可以了。

redis持久化 – 两种方式
一、redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。

RDB(Redis DataBase):是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上;
特点:
1.周期性
2.不影响数据写入 #RDB会启动子进程,备份所有数据。当前进程,继续提供数据的读写。当备份完成,才替换老的备份文件。
3.高效 #一次性还原所有数据
4.完整性较差 #故障点到上一次备份,之间的数据无法恢复。

AOF(Append Only File)则是换了一个角度来实现持久化,那就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。
特点:
1.实时性
2.完整性较好
3.体积大 #记录数据的指令,删除数据的指令都会被记录下来。
二、RDB和AOF两种方式也可以同时使用,在这种情况下,如果redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。
如果你没有数据持久化的需求,也完全可以关闭RDB和AOF方式,这样的话,redis将变成一个纯内存数据库,就像memcache一样。

三、如何选择方式?
缓存:不用开启任何持久方式
双开:因RDB数据不实时,但同时使用两者时服务器只会找AOF文件,所以RDB留作万一的手段。
redis持久化 – 如何选择RDB和AOF
对于我们应该选择RDB还是AOF,官方的建议是两个同时使用。这样可以提供更可靠的持久化方案。
写入速度快 ------------AOF
写入速度慢 ------------RDB

持久化配置

1、RDB默认开启:
[root@redis-master src]# cd …
[root@redis-master redis]# vim redis.conf
#dbfilename:持久化数据存储在本地的文件
dbfilename dump.rdb
#dir:持久化数据存储在本地的路径
dir /data/application/redis/data
##snapshot触发的时机,save
##如下为900秒后,至少有一个变更操作,才会snapshot
##对于此值的设置,需要谨慎,评估系统的变更操作密集程度
##可以通过“save “”来关闭snapshot功能
#save时间,以下分别表示更改了1个key时间隔900s进行持久化存储;更改了10个key300s进行存储;更改10000个key60s进行存储。
save 900 1
save 300 10
save 60 10000
##当snapshot时出现错误无法继续时,是否阻塞客户端“变更操作”,“错误”可能因为磁盘已满/磁盘故障/OS级别异常等
stop-writes-on-bgsave-error yes
##是否启用rdb文件压缩,默认为“yes”,压缩往往意味着“额外的cpu消耗”,同时也意味这较小的文件尺寸以及较短的网络传输时间
rdbcompression yes
2、客户端使用命令进行持久化save存储:

auth

方式一
[root@redis-master src]# ./redis-cli -h 192.168.246.202 -p 6379 #前台进行存储
OK
方式二
./redis-cli -h ip -p port bgsave #后台进行存储
注意:每次快照持久化都是将内存数据完整写入到磁盘一次,并不是增量的只同步新数据。如果数据量大的话,而且写操作比较多,必然会引起大量的磁盘io操作,可能会严重影响性能。
save方式:持久化前面的所有数据(rdb模式没开时,后续的数据不会进行备份)

部署三台机器redis—主从同步

redis-master----192.168.246.202
redis-slave-1-----192.168.246.203
redis-slave-2-----192.168.246.204
1.首先三台服务器将redis部署完成。
2.编辑master的redis配置文件:
[root@redis-master ~]# cd /data/application/redis/
[root@redis-master redis]# vim redis.conf
在这里插入图片描述2.修改slave1的配置文件:
[root@redis-slave-1 ~]# cd /data/application/redis/
[root@redis-slave-1 redis]# vim redis.conf —修改如下:
在这里插入图片描述在这里插入图片描述
3.修改slave2的配置文件
[root@redis-slave-2 ~]# cd /data/application/redis/
[root@redis-slave-2 redis]# vim redis.conf #和slave1一样

4.重启三台redis

5.测试主从
1.在master上面执行
[root@redis-master redis]# cd src/
[root@redis-master src]# ./redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set name xuan
OK
127.0.0.1:6379> get name
“xuan”
127.0.0.1:6379>
2.分别在slave-1和slave-2上面执行:
[root@redis-slave-1 redis]# cd src/
[root@redis-slave-1 src]# ./redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> get name
“xuan”
127.0.0.1:6379>
[root@redis-slave-2 src]# ./redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> get name
“xuan”
127.0.0.1:6379>
查看复制状态
master执行:
127.0.0.1:6379> info replication
#Replication
role:master
connected_slaves:2
slave0:ip=192.168.246.203,port=6379,state=online,offset=490,lag=0
slave1:ip=192.168.246.204,port=6379,state=online,offset=490,lag=1

slave上面执行:
127.0.0.1:6379> info replication
#Replication
role:slave
master_host:192.168.246.202
master_port:6379
master_link_status:up

配置哨兵模式

1.每台机器上修改redis主配置文件redis.conf文件设置:bind 0.0.0.0 —已经操作
2.每台机器上修改sentinel.conf配置文件:修改如下配置
[root@redis-master src]# cd …
[root@redis-master redis]# vim sentinel.conf
sentinel monitor mymaster 10.0.0.137 6379 2 #当集群中有2个sentinel认为master死了时,才能真正认为该master已经不可用了。 (slave上面写的是master的ip,master写自己ip)
sentinel down-after-milliseconds mymaster 3000 #单位毫秒
sentinel failover-timeout mymaster 10000 #若sentinel在该配置值内未能完成failover(故障转移)操作(即故障时master/slave自动切换),则认为本次failover失败。
protected-mode no #关闭加密模式–新添加到sentinel配置文件中
3.每台机器启动哨兵服务:
4.将master的哨兵模式退出,再将redis服务stop了,在两台slave上面查看其中一台是否切换为master:(没有优先级,为随机切换)
去从的里面查看
[root@redis-master src]# ./redis-cli
192.168.246.202:6379>info replication

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis 部署及介绍 的相关文章

  • 有没有办法在 Redis 和关系数据库中使用带有 @RedisHash 的实体?

    我正在使用Spring引导 为了将我的实体保存在关系数据库上 我配置了一个数据源和我的域类 例如 Entity Table schema schema name name tb name public class table name ex
  • Redis多插入问题

    我尝试多次插入 但它给了我错误 http pastie org 7337421 http pastie org 7337421 cat mass insert txt 3 r n 3 r nSET r n 3 r nkey r n 5 r
  • 连接到 localhost:6379 时出现错误 99。无法分配请求的地址

    设置 我有一个虚拟机 并在虚拟机中运行三个容器 一个 nginx 代理 一个非常简约的 Flask 应用程序和 redis Flask 应在端口 5000 上提供服务 而 redis 应在 6379 上提供服务 这些容器中的每一个都可以作为
  • 使用 sidekiq 处理两个独立的 Redis 实例?

    下午好 我有两个独立但相关的应用程序 他们都应该有自己的后台队列 阅读 单独的 Sidekiq 和 Redis 进程 然而 我希望偶尔能够将工作推给app2的队列来自app1 从简单的队列 推送的角度来看 如果app1没有现有的 Sidek
  • 使用 EVAL、SCAN 和 DEL 的 Redis 通配符删除脚本返回“非确定性命令后不允许写入命令”

    因此 我正在寻求构建一个 lua 脚本 该脚本使用 SCAN 根据模式查找键并删除它们 原子地 我首先准备了以下脚本 local keys local done false local cursor 0 repeat local resul
  • Stackexchange.redis 缺乏“WAIT”支持

    我在客户端应用程序正在使用的负载均衡器后面有 3 个 Web API 服务器 我正在使用这个库来访问具有一个主服务器和几个从服务器的 Redis 集群 目前不支持 WAIT 操作 我需要此功能来存储新创建的用户会话并等待它复制到所有从属服务
  • 如何使用Spring Cache处理redis异常?

    我目前正在开发一个包含 Spring Data Redis 和 Spring Cache 的项目 在spring data redis中 我使用redis模板调用redis 我在 try catch 块中处理 redis 模板抛出的所有异常
  • 是否有可嵌入的 Java 替代 Redis?

    根据这个线程 https stackoverflow com questions 3047010 best redis library for java 如果我想从Java中使用Redis Jedis是最好的选择 然而 我想知道是否有任何库
  • Docker-compose Predis 不通过 PHP 连接

    我正在尝试使用 docker compose 将 PHP 与 redis 连接 docker compose yml version 2 services redis image redis 3 2 2 php image company
  • redis-cli 重定向到 127.0.0.1

    我在PC1上启动Redis集群 然后在PC2上连接它 当需要重定向到另一个集群节点时 它会显示Redirected to slot 7785 located at 127 0 0 1 但应该显示Redirected to slot 7785
  • Spring Data Redis - Lettuce连接池设置

    尝试在 spring data redis 环境中设置 Lettuce 连接池 下面是代码 Bean LettuceConnectionFactory redisConnectionFactory GenericObjectPoolConf
  • 通过 StackExchange.Redis 连接到 Redis Servier

    我尝试使用以下方法制作一个测试项目Redis https redis io服务器 通过 Virtual Box 安装在 Linux Ubuntu 虚拟机上 Linux 机器通过 Virtual Box 的桥接适配器与本地网络连接 Virtu
  • 在 aws-elasticache 上使用 memcached 或 Redis

    我正在 AWS 上开发一个应用程序 并使用 AWS elasticache 进行缓存 我对使用 memcached 或 redis 感到困惑 我阅读了有关 redis 3 0 2 更新以及它现在如何等同于 memchached 的文章 ht
  • 使用Redis从有限范围内生成唯一ID

    我有一些数据库项目 除了主键之外 还需要项目所属组的唯一索引 我们来调用属性nbr 以及将项目分组在一起并定义唯一范围的属性nbr 我们会打电话group This nbr必须在 1 N 范围内 并且may从外部源导入项目时进行设置 由于所
  • 如何在Redis中进行持久化存储?

    关闭redis服务器后 使用set存储的值被破坏 在这里我找到了使用持久性存储的方法 有人帮助我 如何使用javascript实现这一点 我想将客户端的一些值存储在 redis 数据库中 并且必须在其他客户端中使用该值 您需要配置 Redi
  • Node Js:Redis 作业在完成其任务后未完成

    希望你们做得很好 我在我的 Nodejs 项目中实现了 BullMQ Bull 的下一个主要版本 来安排发送电子邮件的作业 例如 发送忘记密码请求的电子邮件 所以 我编写了如下所示的代码 用户服务 await resetPasswordJo
  • Lua中按字符分割字符串

    我有像这样的字符串 ABC DEF 我需要将它们分开 字符并将两个部分分别分配给一个变量 在 Ruby 中 我会这样做 a b ABC DEF split 显然Lua没有这么简单的方法 经过一番挖掘后 我找不到一种简短的方法来实现我所追求的
  • Redis Cluster 与 Pub/Sub 中的 ZeroMQ,用于水平扩展的分布式系统

    如果我要设计一个巨大的分布式系统 其吞吐量应随系统中的订阅者数量和通道数量线性扩展 哪个会更好 1 Redis集群 仅适用于Redis 3 0 alpha 如果是集群模式 您可以在一个节点上发布并在另一个完全不同的节点上订阅 消息将传播并到
  • 2 个具有共享 Redis 依赖的 Helm Chart

    目前 我有 2 个 Helm Charts Chart A 和 Chart B Chart A 和 Chart B 对 Redis 实例具有相同的依赖关系 如Chart yaml file dependencies name redis v
  • 如何使 Redis 缓存中数据层次结构(树)的部分内容无效

    我有一些产品数据 需要在 Redis 缓存中存储多个版本 数据由 JSON 序列化对象组成 获取普通 基本 数据的过程很昂贵 将其定制为不同版本的过程也很昂贵 因此我想缓存所有版本以尽可能进行优化 数据结构看起来像这样 BaseProduc

随机推荐

  • 【无标题】执行java -version查看java版本,显示无权限

    1 来看一下报错截图 2 解决方法 xff0c 给jdk1 8 0 102 bin java赋权 chmod 777 jdk1 8 0 102 bin java 3 验证
  • 配置阿里云yum源

    1 进入到yum源配置文件 cd etc yum repos d rm f 清空所有镜像文件 2 下载aliyun centos8镜像文件 curl o etc yum repos d CentOS Base repo http mirro
  • 配置NTP服务

    设置时区为 Asia Shanghai 设置时区 xff1a timedatectl set timezone Asia Shanghai 查看时区 xff1a timedatectl 有两种情况 一 外网环境 xff0c 向互联网的NTP
  • Could not resolve host: mirrors.aliyun.com; Unknown error

    1 在下载阿里云的centos7镜像时 xff0c 报错如图 2 先ping一下www baidu com 找不到主机 xff0c 这里就说明dns有问题 3 查看一下配置 etc resolv conf 可以看出这个没有dns服务器在 x
  • OpenSSH升级

    OpenSSH是SSH协议的免费开源实现 经常会曝出安全漏洞 xff0c 由于CentOS7自带的OpenSSH版本 xff08 OpenSSH 7 4p1 OpenSSL 1 0 2k fips 26 Jan 2017 xff09 太低
  • linux查看并安装字体

    1 查看系统字体 查看所有已安装的字体 xff1a fc list 查看已安装的中文字体 xff1a fc list lang 61 zh 2 寻找字体方法 1 把windows里面的字体上传到服务器里面 windows字体存放的路径是 x
  • 简单搭建Apache服务器

    1 安装Apache服务 yum y install httpd 2 启动自启Apache服务 systemctl enable now httpd 3 访问 xff08 默认是80端口 xff0c 需要开放防火墙 xff09 4 Apac
  • docker容器设置中文编码

    使用的Dockerfile指定变量的方法 ENV LANG en US utf8
  • mysql开通binlog权限

    GRANT SELECT REPLICATION SLAVE REPLICATION CLIENT ON TO 39 v5 binlog 39 64 39 39 IDENTIFIED BY 39 v5 binlog 39
  • MySQL查看所有用户

    MySQL查看所有用户
  • 【nginx】反向代理是,url包含特殊字符导致400错误

    现象 xff1a 在一个url参数中包含了特殊字符 xff0c 通过nginx请求 xff0c 报400错误 问题分析 xff1a 这个url请求 xff0c 绕开nginx xff0c 可以返回数据 xff0c 判定是nginx出现问题
  • KVM

    KVM安装 查看cpu是否支持虚拟化 cat proc cpuinfo grep E vmx svm 关闭防火墙和selinux 注 xff1a 如果虚拟机ping不通就把防火墙开起来 1 需求内核 rhel6以上 root 64 kvm
  • nginx 防盗链详细步骤

    tailf n0 access log 实时查看网页访问详情 curl e www baidu com 127 0 0 1 e 添加访问头 本机的配置文件内容 本机的网站发布目录 别人的链接网站发布目录
  • nginx 404错误页面配置详解

    nginx 错误页面配置 再主配置文件server中加入一个location模块即可 vim etc nginx conf d default conf server listen 80 server name localhost loca
  • nginx 版本升级和添加模块详解

    版本升级 把1 16 0版本升级为1 18 0 查看本机现在版本为1 16 0 root 64 localhost usr local nginx sbin nginx v nginx version nginx 1 16 0 1 xff0
  • lvs架构

    lvs 4种模式 1 nat 网络地址转换模式 2 dr 直接路由模式 3 tun 隧道模式 4 full nat 双向转换模式 1 xff0c nat xff08 网络地址转换模式架构 xff09 1 nat模式优势是 xff0c 后端可
  • nginx 代理 负载均衡 网站转接的用法

    反向代理 1 xff0c 准备两台nginx真实服务器 a nginx 1 启动网站 内容 xff08 作为网站服务器 xff09 b nginx 2 启动代理程序 一 编辑nginx 2的配置文件 root 64 nginx server
  • LVS_Director + KeepAlived 部署

    1 xff0c 准备四台net机器 其中两台做主 备调度 别外两台做web机器 主 备调度器安装软件 root 64 lvs keepalived master yum y install ipvsadm keepalived 主 root
  • tomcat 详情介绍与部署

    1 xff0c 部署tomcat 安装JDK JDK下载面页 xff1a http www oracle com technetwork java javase downloads index html 下载jdk1 8到服务器 安装jdk
  • Redis 部署及介绍

    1 安装单机版redis root 64 redis master mkdir p data application 创建工作目录 root 64 redis master wget http download redis io relea