目录
redis的持久化配置(图文介绍)
redis简述
redis的优缺点
上面有提到持久化,何为持久化?
实现持久化的方式
redis 的数据结构
实现redis的持久化
部署redis
持久化之RDB配置
持久化之AOF配置
重启redis使其生效,验证持久化
redis主从复制
另起一台服务器,安装redis
主服务器上新建键值,测试从服务器自动同步
首页 数据库 SQL redis的持久化配置(图文介绍)

redis的持久化配置(图文介绍)

Jun 17, 2020 pm 04:40 PM
redis

redis的持久化配置(图文介绍)

redis的持久化配置(图文介绍)

redis简述

redis是一款由c语言编写的,开源的高可用的非关系型数据库(NoSQL,不仅仅是数据库)型的键值对(key-value)数据库。

与传统的数据库不同的是redis的数据是存在内存的,所以读写性能不是一般的高,可达到每秒10万次操作,因此被广泛的应用到缓存方向,例如:在网站架构里面和tomcat做session共享,做数据库缓存等。

redis的优缺点

优点

  1. 读写速度快,读能达到110000次/s,写能达到81000次/s,c语言写的,代码优雅,而且还是单线程架构 ,所以执行效率高,速度快

  2. 支持多种数据结构,字符串(string,也是最常用的),哈希(hash),列表(list),集合(SET),有序集合(ZSET)

  3. 丰富的功能,例如:天然计数器,  键过期功能,消息队列等

  4. 支持的客户端语言多,支持 php,java,python

  5. 支持数据持久化

  6. 自带多种高可用架构,比如:主从复制,哨兵,高可用集群

缺点

  1. 正是因为数据都存在内存里,所以对服务器性能要求严格,根据业务量自己选择内存选购多大

  2. 很难实现在线扩容,所以第一次选购需谨慎

上面有提到持久化,何为持久化?

持久化就是支持把内存中的数据写到磁盘里面,防止服务器宕机了内存里面数据全部丢失。

实现持久化的方式

支持2种格式持久化数据AOF, RDB,还有就是这两种混合使用 AOF&RDB
注意:当这种都开启时,redis数据恢复优先使用AOF,但是RDB是默认的持久化方式。

AOF持久化:就是把redis每一次执行的命令都记录到单独指定的日志文件里面,当重启或者要恢复数据时就会恢复日志文件中的数据

RDB:就像是拍快照一样,按照配置文件定义的save参数来定义快照的周期,然后保存到硬盘里面,会产生dump.rdb文件

AOF和RDB的对比:

  1. 1AOF文件比rdb更新频率高,优先使用aof还原

  2. aof比rdb更安全

  3. rdb性能比aof要好,数据量很大时,日志恢复速度比rdb慢

  4. 在持续读写时,如果rdb拍摄快照,会有数据延迟,恢复的数据会不完整

redis 的数据结构

数据类型 存储值 常用的操作命令 应用的场景
string 字符串 SET(创建),GET(查看),DEL(删除),MSET(批量创建),MGET(批量查看 做缓存,键值对的过期时间, 把session会话存在redis,过期删除, 缓存用户信息,缓存Mysql部分数据,商城优惠卷过期时间等
list 列表 RPUSH(创建,若存在则向右边添加),LPUSH(左添加,LRABGE+范围(查看范围值),RPOP(删除右边最后一个),LPOP(删除左边最后一个) 一般与zset结合用,主要应用于排行榜,热度/点击数排行榜,直播间榜一大哥排行等
hash 哈希 HMSET+对象(创建对象的键值,针对的是一个对象),HGET+对象(查看对象的某个参数) 一般key是ID或唯一标识,value是对应的详细信息,如:商品信息,个人信息,新闻等
SET 无序集合 SADD(创建集合),SMEMBERS(查看集合),SREM(删除集合的值),SDIFF集合1 集合2(求差集),SINTER 集合1 集合2 (求合集),SUNION集合1 集合2(求并集) 求交集,并集,合集,应用于社交网络,如:共同爱好,共同好友等
ZSET 有序集合 同SET 可以和list结合完成排行榜

实现redis的持久化

部署redis

1.创建数据目录

mkdir -p /redis/soft
mkdir -p /opt/redis_cluster/redis_6379/{conf,logs,pid}
登录后复制

解释下为什么自己创建conf,logs,pid目录,而不是让它初始化自动生成
我们是为了再一台主机上开启多个redis进程来实现后期的redis集群(至少6台)(Author电脑配置不允许我任性操作)

2.下载redis安装包

cd /redis/soft
wget http://download.redis.io/releases/redis-5.0.6.tar.gz
登录后复制

3.解压redis到/opt/redis_cluster/

tar zxf redis-5.0.6.tar.gz -C /opt/redis_cluster/
ln -s /opt/redis_cluster/redis-5.0.6  /opt/redis_cluster/redis  #做好软连接,方便自己管理
登录后复制

4.切换目录安装redis

	cd /opt/redis_cluster/redis
	make && make install
登录后复制

5.自己编写配置文件/opt/redis_cluster/redis_6379/conf/6379.conf
添加一些重要的内容

添加:
bind 127.0.0.1 192.168.10.1
port 6379
daemonize yes  #开启daemon进程pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
databases 16
dbfilename redis.rdb  #RDB持久化文件dir /opt/redis_cluster/redis_6379 #RDB存放的位置
登录后复制

6.启动当前redis服务
redis-server /opt/redis_cluster/redis_6379/conf/6379.conf

[root@redis-master ~]# netstat -anpt |grep 6379tcp        0      0 192.168.10.1:6379       0.0.0.0:*               LISTEN      49206/redis-server  
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      49206/redis-server  
tcp        0      0 127.0.0.1:41400         127.0.0.1:6379          TIME_WAIT   -                   
tcp        0      0 192.168.10.1:6379       192.168.10.8:46220      ESTABLISHED 49206/redis-server  
[root@redis-master ~]#
登录后复制

持久化之RDB配置

修改配置文件,添加save项

vim /opt/redis_cluster/redis_6379/conf/6379.conf	
添加:
save 900 1           #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。save 300 10          #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。save 60 500        #在60秒(1分钟)之后,如果至少有500个key发生变化,则dump内存快照
登录后复制

持久化之AOF配置

同为修改配置文件
添加appendonly,启用持久化

vim /opt/redis_cluster/redis_6379/conf/6379.conf
添加:
appendonly yes				#启用AOF持久化appendfilename "redis.aof"	#指定AOF文件名appendfsync everysec		#每秒同步一次
登录后复制

重启redis使其生效,验证持久化

redis-cli shutdownredis-server /opt/redis_cluster/redis_6379/conf/6379.conf
登录后复制

在redis数据库里面添加键值对

#!/bin/bashfor i in {1..500}do 
	redis-cli set k_$i v_$idone
登录后复制

9c9103c5911d6584ccd43c60bf85aa2.png

这时候关闭数据库,内存里的东西正常肯定会丢失,但是,现在肯定不会丢失的,而且还会有持久化的文件

[root@redis-master ~]# redis-cli shutdown[root@redis-master ~]# redis-server /opt/redis_cluster/redis_6379/conf/6379.conf [root@redis-master ~]# [root@redis-master ~]# redis-cli127.0.0.1:6379> keys k_500
1) "v_500"127.0.0.1:6379>
登录后复制

在这里插入图片描述

redis主从复制

为什么要做redis主从复制?
为解决单点故障把数据复制到一个或多个副本副本服务器(从服务器),实现冗余,达到故障恢复和负载均衡的目的

另起一台服务器,安装redis

1.为了简单,我们直接复制前边master

[root@redis-master ~]# scp -rp /opt/redis_cluster/ root@192.168.10.8:/opt

2.直接make install安装redis,无须再编译,在master已经做过

修改配置文件

cd /opt/redis_cluster/redis
vim /opt/redis_cluster/redis_6379/conf/6379.conf 
修改:
	bind 127.0.0.1 192.168.10.8
	slaveof 192.168.10.1 6379  #添加master的ip port保存退出
登录后复制

3.启动服务

redis-server /opt/redis_cluster/redis_6379/conf/6379.conf

主服务器上新建键值,测试从服务器自动同步

在这里插入图片描述
在这里插入图片描述
注:
从服务器在同步过程中,只能复制主数据库的数据,不能手动添加修改数据;
如果从服务器非要修改数据,需要断开同步:
[root@redis-slave ~]# redis-cli slaveof no one

提示OK即可

如果master宕机的话,从服务器可以先手动断开同步,这时候,他就是一个独立的个体,其他的从服务器再指向自己,即可完成切换

本文转自:https://blog.csdn.net/weixin_43815140/article/details/106128848

更多相关知识,请访问 PHP中文网!!

以上是redis的持久化配置(图文介绍)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

redis集群模式怎么搭建 redis集群模式怎么搭建 Apr 10, 2025 pm 10:15 PM

Redis集群模式通过分片将Redis实例部署到多个服务器,提高可扩展性和可用性。搭建步骤如下:创建奇数个Redis实例,端口不同;创建3个sentinel实例,监控Redis实例并进行故障转移;配置sentinel配置文件,添加监控Redis实例信息和故障转移设置;配置Redis实例配置文件,启用集群模式并指定集群信息文件路径;创建nodes.conf文件,包含各Redis实例的信息;启动集群,执行create命令创建集群并指定副本数量;登录集群执行CLUSTER INFO命令验证集群状态;使

redis底层怎么实现 redis底层怎么实现 Apr 10, 2025 pm 07:21 PM

Redis 使用哈希表存储数据,支持字符串、列表、哈希表、集合和有序集合等数据结构。Redis 通过快照 (RDB) 和追加只写 (AOF) 机制持久化数据。Redis 使用主从复制来提高数据可用性。Redis 使用单线程事件循环处理连接和命令,保证数据原子性和一致性。Redis 为键设置过期时间,并使用 lazy 删除机制删除过期键。

redis-server找不到怎么办 redis-server找不到怎么办 Apr 10, 2025 pm 06:54 PM

解决redis-server找不到问题的步骤:检查安装,确保已正确安装Redis;设置环境变量REDIS_HOST和REDIS_PORT;启动Redis服务器redis-server;检查服务器是否运行redis-cli ping。

redis怎么查看所有的key redis怎么查看所有的key Apr 10, 2025 pm 07:15 PM

要查看 Redis 中的所有键,共有三种方法:使用 KEYS 命令返回所有匹配指定模式的键;使用 SCAN 命令迭代键并返回一组键;使用 INFO 命令获取键的总数。

redis怎么读源码 redis怎么读源码 Apr 10, 2025 pm 08:27 PM

理解 Redis 源码的最佳方法是逐步进行:熟悉 Redis 基础知识。选择一个特定的模块或功能作为起点。从模块或功能的入口点开始,逐行查看代码。通过函数调用链查看代码。熟悉 Redis 使用的底层数据结构。识别 Redis 使用的算法。

redis指令怎么用 redis指令怎么用 Apr 10, 2025 pm 08:45 PM

使用 Redis 指令需要以下步骤:打开 Redis 客户端。输入指令(动词 键 值)。提供所需参数(因指令而异)。按 Enter 执行指令。Redis 返回响应,指示操作结果(通常为 OK 或 -ERR)。

redis怎么读取队列 redis怎么读取队列 Apr 10, 2025 pm 10:12 PM

要从 Redis 读取队列,需要获取队列名称、使用 LPOP 命令读取元素,并处理空队列。具体步骤如下:获取队列名称:以 "queue:" 前缀命名,如 "queue:my-queue"。使用 LPOP 命令:从队列头部弹出元素并返回其值,如 LPOP queue:my-queue。处理空队列:如果队列为空,LPOP 返回 nil,可先检查队列是否存在再读取元素。

redis怎么使用锁 redis怎么使用锁 Apr 10, 2025 pm 08:39 PM

使用Redis进行锁操作需要通过SETNX命令获取锁,然后使用EXPIRE命令设置过期时间。具体步骤为:(1) 使用SETNX命令尝试设置一个键值对;(2) 使用EXPIRE命令为锁设置过期时间;(3) 当不再需要锁时,使用DEL命令删除该锁。

See all articles