redis基础及redis的持久化和数据恢复

Redis(Remote Dictionary Server)基础

redis:非关系型数据库,内存存储,持久化,键值对存储,监听端口号6379/tcp,默认监听127.0.0.1地址(只能本地访问)

1.noSQL数据库类型

        文档型数据库:MongoDB等

        列族数据库:HBase,Cassandra等

        图形数据库:Neo4j,ArangoDB等

        键值对数据库:Redis,Memcached等

        对象数据库:db4o等

2.redis应用场景:

        高速缓存(它可以缓存各种类型的数据,如数据库查询结果、API返回结果等,以提高应用程序的响应速度和并发性能)

        分布式锁(Redis的分布式锁可以确保在分布式系统中对某个资源的互斥访问,避免多个节点出现并发操作的问题)

        计数器(能够方便地实现各种计数器的功能,如网站访问次数计数、订单数量计数等), 会话管理(实现会话的状态存储和共享,避免了单点故障的问题)

        消息队列(实现异步消息处理和任务派发等功能。)

3.数据类型:字符串,哈希值,集合,列表,位图

4.redis安装

编译安装

​
wget http://download.redis.io/releases/redis-5.0.8.tar.gz

yum安装

Yum -y install epel-release

Yum -y install redis

5.启动:systemctl start redis

5.查看生成了什么文件: rpm -ql redis

        启动脚本: /usr/lib/systemd/system/redis.service

 6.配置文件:/etc/redis.conf   #不建议单台主机运行多个redis,在修改配置文件之前,一定要先关闭redis 

bind 127.0.0.1  #修改监听地址(注:更改redis监听地址/端口号之前一定要关掉redis,更改后再重启)

port 6379    #修改监听端口号

pidfile    #指定通过该配置文件启动

Reids    #进程后的PID文件名称

Loglevel    #定义日志级别

Logfile    #定义日志存储路径

Databases 16   #指定默认数据库数量

Save   #定义单位时间内key的改变次数

Dbfilename   #定义存储RDB持久化数据的文件名称

Dir   #定义RDB与AOF文件的存储目录

Appendonly    #AOF的启停

Appendfilename    #定义AOF持久化文件的名称

Appendfsync    #定义AOF数据同步间隔

requirepass     #设置登录redis的密码

Maxmemory #内存限制

7.redis启动命令:redis-server

redis登录命令:redis-cli

选项: -h 指定redis服务器IP

-p 指定访问端口号

-a 指定登录密码

-n 指定数据库编号

8.帮助信息:help 命令字

          例:help set

                tab补齐

9.数据操作

  • Set    设置键值对

例:Set key value

  • Keys   键

例:keys * #查看所有键的名称

Keys 键名称 #查看一个键是否存在

  • Get    取出键值对

例:get 键   #键不存在则返回空

  • Del    删除键值对
  • FLUSHALL    清空所有数据库中的数据
  • Rename    重命名键名称(不论更名后的键是否存在都会覆盖原有键,并将改名前的键的值赋予改名后的键)

例:rename oldkey newkey

  • Renamenx   重命名键名称(若改名后键名称存在则改名不成功)

例:renamenx oldkey newkey

  • Move   移动键值对到指定数据库(若目标数据库中存在同名键则移动失败)

例:move key dbnum

  • Ttl    查看键值对的生命周期

Ttl key -1(永久)

      -2(已过期)

  • EXPIRE    设置键值对的存储周期

例:EXPIRE lisi 10 #设置lisi的生命周期是10s

  • HSET    hashi值存储指令
  • Save    同步保存,将当前redis实例的所有数据快照以RDB文件的形式保存到硬盘(#注:不建议在生产环境中执行save命令,在保存过程中,Redis 将无法处理任何新的命令,直到保存过程完成)
  • Bgsave    同步保存,不会阻塞客户端请求
  • Bgrewriteaof     重写AOF文件,从而减小大小并优化读取效率

 

 

redis持久化

Redis 是一个基于内存的键值对存储系统,为了确保数据在服务器重启或者发生故障时不会丢失,它提供了两种持久化方式:RDB(Redis Database)和 AOF(Append Only File)

1.RDB(Redis Database) 安全性,一致性

通过将某个时间点上的数据生成快照保存到磁盘上实现持久化,异步保存,默认持久化

RDB持久化生成的数据快照文件:/var/lib/redis/dump.rdb   #数据库启动时读取

触发条件:redis进程退出,宕机,redis程序崩溃,手动保存(save)

2.AOF(Append Only File) 性能,快速恢复

AOF 持久化记录每次写操作的命令并追加到日志文件中,当 Redis 重启时,它会重新执行这些命令来恢复数据,相比于 RDB,AOF 提供更好的数据完整性,因为它是持续记录所有写操作,而 RDB 只是定期快照。AOF 还提供不同的 fsync 策略,用于控制数据同步到磁盘的时间间隔,以平衡数据安全性与性能。

AOF持久化生成的数据快照文件:/var/lib/redis/appendonly.aof

配置AOF持久化:

1.在redis配置文件(/etc/redis.conf中找到appendonly no字段,将no改为yes)

2.重启redis服务

Systemctl restart redis

3.Cd /var/lib/redis/ 查看是否生成了appendonly.aof文件

4. 实时监控AOF持久化机制生成的文件

Tail -f appendonly.ao 

5.进入redis中set添加键值对

6.Tail -f appendonly.ao查看是否有新的数据添加

#注:即使启用了持久化,仍然无法完全避免数据丢失的情况,比如硬件故障、电力中断等。因此,建议结合备份策略来进一步保护数据。

频繁地进行 RDB 快照会导致性能下降,特别是在大型数据库的情况下,所以要合理设置 save 参数。

AOF 文件的增长可能会导致磁盘空间不足,需要定期监控和清理。

 

数据恢复

停止 Redis 服务,然后将备份的 RDB 或 AOF 文件复制到 Redis 的数据目录下。

RDB 文件:直接重启 Redis 服务即可。

AOF 文件:修改配置文件,确保 appendonly 参数设置为 "yes",然后重启 Redis 服务。

注意:

1.在进行数据恢复前,请确保有足够的磁盘空间以及 Redis 配置正确。

2.如果 Redis 服务器有多个数据库实例或分片,需要对每个实例分别进行数据恢复。

3.虽然 Redis 支持数据持久化,但仍然建议结合备份策略来保护数据,防止意外丢失。

4.如果遇到任何问题,比如文件损坏、无法加载等,可以尝试使用官方提供的工具如 redis-check-rdb 和 redis-check-aof 进行检查和修复。

你可能感兴趣的:(redis,数据库,缓存)