redis 介绍

1. redis 概览

Redis和Memcached是非关系型数据库也称为NoSQL数据库,MySQL、Mariadb、SQL Server、PostgreSQL、
Oracle 数据库属于关系型数据(RDBMS, Relational Database Management System)

Redis(Remote Dictionary Server)在2009年发布,开发者Salvatore Sanfilippo是意大利开发者,他本想为自己的
公司开发一个用于替换MySQL的产品Redis,但是没有想到他把Redis开源后大受欢迎,短短几年,Redis就有了很
大的用户群体,目前国内外使用的公司有GitHub、新浪微博、 知乎网等
redis是一个开源的、遵循BSD协议的、基于内存的而且目前比较流行的键值数据库(key-value database),是一个
非关系型数据库,redis提供将内存通过网络远程共享的一种服务,提供类似功能的还有memcached,但相比
memcached,redis还提供了易扩展、高性能、具备数据持久性等功能。

2. redis对比memcached

  • 支持数据的持久化:可以将内存中的数据保持在磁盘中,重启redis服务或者服务器之后可以从备份文件中恢复数据到内存继续使用。
  • 支持更多的数据类型:支持string(字符串)、hash(哈希数据)、list(列表)、set(集合)、zet(有序集合)
  • 支持数据的备份:可以实现类似于数据的master-slave模式的数据备份,另外也支持使用快照+AOF。
  • 支持更大的value数据:memcache单个key value最大只支持1MB,而redis最大支持512MB。
  • Redis 是单线程,而memcache是多线程,所以单机情况下没有memcache并发高,但redis 支持分布式集群以实现更高的并发,单Redis实例可以实现数万并发。
  • 支持集群横向扩展:基于redis cluster的横向扩展,可以实现分布式集群,大幅提升性能和数据安全性。
  • 都是基于C语言开发

3. redis 应用场景

  • Session 共享:常见于web集群中的Tomcat或者PHP中多web服务器session共享
  • 消息队列:ELK的日志缓存、部分业务的订阅发布系统
  • 计数器:访问排行榜、商品浏览数等和次数相关的数值统计场景
  • 缓存:数据查询、电商网站商品信息、新闻内容
  • 微博/微信社交场合:共同好友、点赞评论等
4.  安装redis 
  通过yum、二进制源码包进行安装部署
复制代码
# systemctl 启动redis 如下
 cat  /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target

[Service]
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target
复制代码

 

5. redis 常用命令
ping #检查redis 联通性 
info #输出redis 配置信息
/apps/redis/bin/redis-cli -h IP/HOSTNAME -p PORT -a PASSWORD #使用客户端连接redis
config 命令用于查看当前redis配置、以及不重启redis服务,动态更改redis配置等
 
更改最大内存
CONFIG SET maxmemory 8589934592

 设置连接密码

CONFIG SET requirepass 123456

 

6. 编译安装后的命令
 ll /apps/redis/bin/
total 32772
-rwxr-xr-x 1 root root 4366792 Feb 16 21:12 redis-benchmark #redis性能测试工具
-rwxr-xr-x 1 root root 8125184 Feb 16 21:12 redis-check-aof #AOF文件检查工具
-rwxr-xr-x 1 root root 8125184 Feb 16 21:12 redis-check-rdb #RDB文件检查工具
-rwxr-xr-x 1 root root 4807856 Feb 16 21:12 redis-cli       #客户端工具
lrwxrwxrwx 1 root root      12 Feb 16 21:12 redis-sentinel -> redis-server #哨兵,软连
接到server
-rwxr-xr-x 1 root root 8125184 Feb 16 21:12 redis-server #redis 服务启动命令
 
 
 
 
 
7 . redis  常用配置

7. redis 持久化

Redis 虽然是一个内存级别的缓存程序,也就是redis 是使用内存进行数据的缓存的,但是其可以将内存的数据按
照一定的策略保存到硬盘上,从而实现数据持久保存的目的,目前redis支持两种不同方式的数据持久化保存机
制,分别是RDB和AOF

7.1 RDB模式

 

 

RDB(Redis DataBase):基于时间的快照,其默认只保留当前最新的一次快照,特点是执行速度比较快,缺点是可
能会丢失从上次快照到当前时间点之间未做快照的数据。

原理:RDB实现的具体过程Redis从master主进程先fork出一个子进程,使用写时复制机制,子进程将内存的数据保存为一个临时文件,比如dump.rdb.temp,当数据保存完成之后再将上一次保存的RDB文件替换掉,然后关闭子进程,这样可以保存每一次做RDB快照的时候保存的数据都是完整的,因为直接替换RDB文件的时候可能会出现突然断电等问题而导致RDB文件还没有保存完整就突然关机停止保存而导致数据丢失的情况,可以手动将每次生成的RDB文件进程备份,这样可以最大化保存历史数据。

RDB模式的优缺点

优点:RDB快照保存了某个时间点的数据,可以通过脚本执行bgsave(非阻塞,后台执行)或者save(阻塞,不推荐)命令自定义时间点备份,可以保留多个备份,当出现问题可以恢复到不同时间点的版本。

可以最大化IO 的性能,因为父进程在保存RDB 文件的时候唯一要做的是fork出一个子进程,然后的-操作都会有这个子进程操作,父进程无需任何的IO操作RDB在大量数据比如几个G的数据,恢复的速度比AOF的快

缺点: 不能实时时保存数据,会丢失自上一次执行RDB备份到当前的内存数据 -数据量非常大的时候,从父进程fork的时候需要一点时间,可能是毫秒或者秒或者分钟,取决于磁盘IO性能

7.2  AOF模式

AOF:AppendOnylFile,按照操作顺序依次将操作追加到指定的日志文件末尾

原理:AOF和RDB一样使用了写时复制机制,AOF默认为每秒钟fsync一次,即将执行的命令保存到AOF文件当中,这样即使redis服务器发生故障的话最多只丢失1秒钟之内的数据,也可以设置不同的fsync策略,或者设置每次执行命令的时候执行fsync,fsync会在后台执行线程,所以主线程可以继续处理用户的正常请求而不受到写入AOF文件的IO影响。

AOF模式优缺点

优点:

  • 数据安全性相对较高,根据所使用的fsync策略(fsync是同步内存中redis所有已经修改的文件到存储设备),默认是appendfsync everysec,即每秒执行一次fsync。
  • 由于该机制对日志文件的写入操作采用的是append模式,因此在写入过程中即使出现宕机现象,也不会破坏日志文件中已经存在的内容。然而如果我们本次操作只是写入了一半数据就出现了系统崩溃问题,不用担心,在Redis下一次启动之前,我们可以通过redis-check-aof工具来帮助我们解决数据一致性的问题。
  • 3). 如果日志过大,Redis可以自动启用rewrite机制。即Redis以append模式不断的将修改数据写入到老的磁盘文件中,同时Redis还会创建一个新的文件用于记录此期间有哪些修改命令被执行。因此在进行rewrite切换时可以更好的保证数据安全性。
  • AOF包含一个格式清晰、易于理解的日志文件用于记录所有的修改操作。事实上,我们也可以通过该文件完成数据的重建。
 

缺点:

  • 即使有些操作是重复的也会全部记录,AOF的文件大小要大于RDB格式的文件
  • RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快

 8. BGSAVE

手动在后台执行RDB持久化操作

复制代码
#交互式执行
127.0.0.1:6379[1]> BGSAVE
Background saving started

#非交互式执行
[root@centos8 ~]#ll /var/lib/redis/
total 4
-rw-r--r-- 1 redis redis 326 Feb 18 22:45 dump.rdb

[root@centos8 ~]#redis-cli -h 127.0.0.1 -a '123456' BGSAVE
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Background saving started
[root@centos8 ~]#ll /var/lib/redis/
total 4
-rw-r--r-- 1 redis redis 92 Feb 18 22:54 dump.rdb
redis bgsave 手动备份
复制代码

 

 
 
posted @   鱼丸粗面没鱼丸  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示