IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis的持久化 -> 正文阅读

[大数据]Redis的持久化

redis是内存式数据库, 数据存在内存上, 内存是临时存储, 一旦断电, 宕机, 内存中的数据丢失

原先的数据需要先备份到硬盘 -- 称为持久化

redis的持久化:

  1. RDB 持久化: 备份的数据, 在指定时间间隔,把数据备份到数据文件: dump.rdb

  2. AOF持久化: 备份的写操作指令(日志): 是以日志,记录每一个写操作,服务器启动后,根据日志来构建数据.

RDB?

RDB:在指定的时间间隔内将内存中的数据集快照写入到磁盘,也就是行话说的snapshot快照,它在恢复时是将快照文件直接读取到内存.

Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能

RDB的优缺点:

优点: RDB方式比AOF效率高

缺点: 丢失最后一次时间间隔的数据

redis的配置文件redis.conf中进行配置:

#save 秒  写的次数
save 900 1
save 300 10
save 60 10000

1) save 900 1 表示每900秒内至少有一个key发生变化,就持久化

2) save 300 10 表示每300秒内至少有10个key发生变化,就持久化

3) save 60 10000 表示每60秒至少有10000个key发生变化,就持久化

关闭rdb持久化

save ""

rdb持久化数据文件保存在 dump.rdb

修改redis.conf

输入 /snapshot 搜索

修改dir??

统一: redis的dump.rdb文件保存路径设置: /var/redis/

备份数据,我们只需要把dump.rdb文件拷贝到另外一个位置,

还原数据:只需要把dump.rdb文件拷贝到redis的安装目录下就可以了,重启redis就可以了。

AOF 方式

appendonly no    是否开启AOF持久化:  no 关闭   yes 开启
appendfilename "appendonly.aof"   aof的日志文件: appendonly.aof,可以修改

# 写的频率: 
# appendfsync always   同步持久化,每次发生数据变更会被立即记录到磁盘 性能较差但数据完整性比较好
appendfsync everysec   异步操作,每秒记录 如果一秒内宕机,有数据丢失
# appendfsync no 表示不同步


#AOF 日志文件重写机制

#percenter 100 100%就是一倍
auto-aof-rewrite-percentage 100  

#rewrite  下次要超过最小值  
auto-aof-rewrite-min-size 64mb 

aof 指令越多 恢复时间越多

对同一个key 记录最后一次

文件追加形式 进程存储到临时文件 再重写aof文件替换旧的 避免宕机

appendonly.aof文件位于 配置dir目录: /var/redis/目录

appendonly.aof: 记录写操作的指令, 读操作指令不会记录

redis.conf配置文件

# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes 
# 密码,设置后访问Redis必须输入密码
requirepass 123321
  • 日志文件不存在?

redis.conf 配置日志文件存储目录 如果没有文件夹,使用mkdir创建目录

  • 其他ip访问不到?

bind 0.0.0.0?

  • 本服务器访问redis客户端

redis-cli (不需要写-h -p)

  • 远程连接redis客户端?

redis.conf中:

关闭保护模式: protected-mode no?

# 监听的端口
port 6379
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1
# 设置redis能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"

复制redis.conf 的原因 备份 改错了可以用复制的文件

关闭防火墙

systemctl stop firewalld.service && systemctl disable firewalld.service 

redis-cli -h ip地址 -p 端口号 (若为阿里云,端口未开启 需要在安全机制手动添加)

redis 可以同时开启 rdb aof持久化

恢复数据 优先aof 如果aof不存在 从dump.rdb恢复数据

Jedis

java连接redis

  1. 引入依赖:

<dependency>
 ? ?<groupId>redis.clients</groupId>
 ? ?<artifactId>jedis</artifactId>
 ? ?<version>4.3.0</version>
</dependency>
  1. 建立连接

    private Jedis jedis;
    @Before
    public void setUp() {
     ? ?// 建立连接 ? 
     ? ?jedis = new Jedis("192.168.145.133", 6379); ? 
     ? ?// 设置密码 ? ?
     ? ?jedis.auth("123"); ? ?
     ? ?// 选择库 ? 
     ? ?jedis.select(0);
    }
    ?
  2. 测试string

    @Test
    public void test1() { ? ?
    // 插入数据,方法名称就是redis命令名称,非常简单 ? 
    String result = jedis.set("name", "张三");
    System.out.println("result = " + result); 
    // 获取数据
    String name = jedis.get("name");
    System.out.println("name = " + name);
    }
    ?

  3. 释放资源

    @After
    public void tearDown() {
     ? ? // 释放资源
     ? ?if (jedis != null) {
     ? ? ? ?jedis.close();
     ?  }
    }

jedis的连接池:

Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们推荐大家使用Jedis连接池代替Jedis的直连方式。

public class JedisConnectionFactory {
private static final JedisPool jedisPool;
static {
 ? JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
 ? // 最大连接
 ? jedisPoolConfig.setMaxTotal(8);
 ? // 最大空闲连接
 ? jedisPoolConfig.setMaxIdle(8);
 ? // 最小空闲连接
 ? jedisPoolConfig.setMinIdle(0);
 ? // 设置最长等待时间, ms
 ? jedisPoolConfig.setMaxWaitMillis(200);
 ? jedisPool = new JedisPool(jedisPoolConfig, "192.168.145.133", 6379, ? ? ? ? ? ? ? ?1000, "123");
}
?
// 获取Jedis对象
public static Jedis getJedis(){
 ? return jedisPool.getResource();
}
}
 

主从复制, 哨兵机制

故障 人工处理: 从从服务器选择一台升级为主服务器, 把其他从服务器作为新的主服务器的从服务器

请一个机器人, 24小时一直在监听主,从服务器运行状态, 这个机器人称为哨兵

如果主服务器出现问题, 哨兵自动从从服务器选择一台升级为主服务器, 把其他从服务器作为新的主服务器的从服务器 --> 自动故障迁移

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 11:16:02  更:2022-12-25 11:16:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/4 7:27:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码