• centos 单机版redis安装与数据持久化


    单机版安装

    mkdir -p /data/application   
    wget http://download.redis.io/releases/redis-4.0.9.tar.gz 
    tar xzf redis-4.0.9.tar.gz -C /data/application/ 
    cd /data/application/
    mv redis-4.0.9/ redis
    cd redis/
    yum install -y gcc make
    make     #如果报错请将刚才解压的安装包删除掉,再次重新解压并进行make安装即可。
    mv redis.conf redis.conf.bak
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    vim redis.conf     
    bind 192.168.246.202  #只监听内网IP
    daemonize yes     #开启后台模式将on改为yes
    port 6379                      #端口号
    dir /data/application/redis/data  #本地数据库存放持久化数据的目录该目录-----需要存在
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建存放数据的目录

    mkdir /data/application/redis/data
    
    • 1

    配置redis为systemctl启动

    vim /lib/systemd/system/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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

    • [Service] 表示这里是服务信息 • ExecStart 是启动服务的命令 • ExecStop 是停止服务的指令
    • [Install] 表示这是是安装相关信息
    WantedBy =multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。

    8.启动服务:

     systemctl daemon-reload  #重新加载
    systemctl start redis.service
    
    • 1
    • 2

    登陆redis

    /data/application/redis/src/:

    cd /data/application/redis/src/
    
    ./redis-cli -h 10.8.161.200 -p 6379
    10.8.161.200:6379> ping 
    PONG
    10.8.161.200:6379> ping  111
    "111"
    10.8.161.200:6379> set name xiaoming
    OK
    10.8.161.200:6379> get name
    "xiaoming"
    10.8.161.200:6379> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    10.8.161.200:6379> set key value [EX seconds] [PX milliseconds] [NX|XX] EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds
    的效果等同于执行 SETEX key seconds value。 PX milliseconds : 将键的过期时间设置为
    milliseconds 毫秒。 执行 SET key value PX milliseconds 的效果等同于执行 PSETEX key
    milliseconds value。 NX : 只在键不存在时, 才对键进行设置操作。 XX : 只在键已经存在时, 才对键进行设置操作。

    使用 EX 选项:
    10.8.161.200:6379> set name1 xiaoming EX 5
    OK
    10.8.161.200:6379> get name1
    "xiaoming"
    10.8.161.200:6379> get name1
    (nil)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    使用 PX 选项:
    10.8.161.200:6379> set name3 xiaoming NX
    OK
    10.8.161.200:6379> set name3 xiaoming NX
    (nil)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    使用 XX 选项:
    10.8.161.200:6379> set name4 xiaoli XX
    (nil)
    10.8.161.200:6379> set name3 xiaoli XX
    OK
    10.8.161.200:6379> get name3
    "xiaoli"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    删除:
    10.8.161.200:6379> del name3
    (integer) 1
    10.8.161.200:6379> get name3
    (nil)
    10.8.161.200:6379> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    redis的相关工具

    ./redis-cli           #redis的客户端
    ./redis-server        #redis的服务端
    ./redis-check-aof     #用于修复出问题的AOF文件
    ./redis-sentinel      #用于集群管理
    
    • 1
    • 2
    • 3
    • 4

    数据持久化

    为什么要数据持久化???
    redis是把数据储存到内存中,那么当电脑关机的时候内存的数据就会消失这是我们不想看到的,即使它数据的读写很快。
    所以内存持久化就是将内存的数据持久化到储存中在,保证数据在内存中消失的时候可以可以通过储存设备将数据读到内存当中。

    1. RDB (Redis DataBase)·------默认开启
      是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上

      周期性
      不影响数据写入
      高效
      完整性较差

      解释:

        周期性     这是由RDB 持久化的save规则决定的配置文件中

      ################################ SNAPSHOTTING  ################################
      #
      # Save the DB on disk:
      #
      #   save  
      #
      #   Will save the DB if both the given number of seconds and the given
      #   number of write operations against the DB occurred.
      #
      #   In the example below the behaviour will be to save:
      #   after 900 sec (15 min) if at least 1 key changed
      #   after 300 sec (5 min) if at least 10 keys changed
      #   after 60 sec if at least 10000 keys changed
      #
      #   Note: you can disable saving completely by commenting out all "save" lines.
      #
      #   It is also possible to remove all the previously configured save
      #   points by adding a save directive with a single empty string argument
      #   like in the following example:
      #
      #   save ""
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22

      不影响数据写入:
        RDB会启动子进程,备份所有数据,当前进程继续提供数据的读写。当备份完成,才替换老的配置文件。

      高效   一次性还原所有数据

      完整性较差   因为周期性的去持久化,所以遇到故障之后会丢故障点到上次做持久化之间的数据。

      每次快照持久化都是将内存数据完整写入到磁盘一次,如果数据量大的话,而且写操作比较多,必然会引起大量的磁盘io操作,可能会严重影响性能。

    2. AOF (Append Only File) 默认关闭

        记录的是操作指令,在下次开启redis时将以前记录的写指令再重新执行一遍从而实现数据恢复

      特点:

      实时性:
        这是有aof的持久化规则决定的

      完整性
        因为实时性每次写入数据的同时可以将写入的记录都记录下来

      体积大
        因为会记录你的操作行为,你的删操作也会被记录,所以文件的体积一直在增大。

    RDB和AOF两种方式也可以同时使用,在这种情况下,如果redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。官方的建议也是将两种持久化的方式都开启

    持久化配置

    #RDB
    bind 10.8.161.200 #绑定监听ip
    daemonize yes #后台守护进程
    port 6379  #监听端口
    dbfilename dump.rdb #持久化文件的名字
    
    dir /data/application/redis/data #文件存放的目录
    save 900 1   #持久化策略
    save 300 10
    save 60 10000
    stop-writes-on-bgsave-error yes  #出错是否停止压缩
    rdbcompression yes  #是否开启文件压缩
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    #AOF
    bind 10.8.161.200
    daemonize yes
    port 6379
    
    dir /data/application/redis/data
    
    appendonly	yes  #开启aof持久化
    
    appendfilename appendonly.aof  #文件名
    
    appendfsync everysec  #持久化策略
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    redis备份

    其实备份很简单,持久化的过程就是数据备份,当你开机启动redis时redis从你做数据化持久的文件中读取数据,这个过程就是恢复数据,所以当你从一台redis备份从另一台redis恢复数据时,你只需要把rdb或者aof文件移动到相应的位置,然后redis重启读取数据,这就是形成了备份到恢复的过程。

    总结:
    rdb的方式就是备份数据本身的文件,用save的策略实行持久化,有周期性
    aof的方式就是sql语句的记录,用appendfsync的三个选项来实施持久化的策略
    其中rdb的方式是redis默认的持久化的方法,但是开启aof的持久化方式时,redis会首先选择aof

    ##snapshot触发的时机,save   
    ##如下为900秒后,至少有一个变更操作,才会snapshot  
    ##对于此值的设置,需要谨慎,评估系统的变更操作密集程度  
    ##可以通过save “”来关闭snapshot功能  
    #save时间,以下分别表示更改了1个key时间隔900s进行持久化存储;更改了10个key300s进行存储;更改10000个key60s进行存储。
    save 900 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    appendfsync everysec
    always     #每次有数据修改发生时都会写入AOF文件
    everysec   #每秒钟同步一次,该策略为AOF的缺省策略/默认策略
    no         #从不同步。高效但是数据不会被持久化
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    Java数据审计工具:Envers and JaVers比较
    JDK17新特性
    如何增长LLM推理token,从直觉到数学
    Python-GIS分析之地理数据空间聚类
    2024 前端面试每日1小时
    浅谈设计模式(五)
    iOS UITableView获取到的contentSize不正确
    【第十三章 节点流-字节型(FileInputStream,FileOutputStream)的使用,图片文件复制,指定路径下文件的复制】
    docker网段冲突导致主机网络异常处理
    【OpenCV DNN】Flask 视频监控目标检测教程 08
  • 原文地址:https://blog.csdn.net/weixin_44754740/article/details/126550473