美文网首页
Redis知识点总结

Redis知识点总结

作者: 凤凤思密达萌萌哒 | 来源:发表于2020-05-04 11:20 被阅读0次

一、redis介绍

redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。官网:http://www.redis.io

1、redis特点

1.丰富的数据结构 ---set、zset、string、list、hash等数据结构的存储。
2.支持持久化。

  1. 支持事务 ---事务是一个完整的动作,要么全部执行,要么全部不做。
    支持主从

2、缓存

1、类型:数据缓存、页面缓存
2、形式:

  • 页面缓存经常用在内存管理系统里边
  • 数据缓存经常用在页面的具体数据里边

3、缓存服务器的作用:加快访问速度,缓解数据库压力

3、redis和memcache比较

1、Redis不仅仅支持简单的k/v类型的数据,同时还提供了list、set、zset、hash等数据结构的存储。
2、Redis支持master-slave模式应用。
3、Redis支持数据的持久化。

二、安装Redis

1、安装单机版Redis
 ---创建工作目录
[root@redis-master ~]# mkdir -p /data/application    
---下载Redis
[root@redis-master ~]# wget http://download.redis.io/releases/redis-4.0.9.tar.gz
---解压
[root@redis-master ~]# tar xzf redis-4.0.9.tar.gz -C /data/application/ 
[root@redis-master ~]# cd /data/application/
[root@redis-master application]# mv redis-4.0.9/ redis 
[root@redis-master application]# cd redis/
---安装编译工具
[root@redis-master redis]# yum install -y gcc make
[root@redis-master redis]# make
注意:如果报错请将刚才解压的安装包删除掉,再次重新解压并进行make安装即可。

---备份
[root@redis-master redis]# cp redis.conf redis.conf.bak
[root@redis-master redis]# vim redis.conf 
修改以下内容:
bind 192.168.124.100  #只监听内网IP
daemonize yes     #开启后台模式将on改为yes
timeout 300      #连接超时时间
port 6379                      #端口号
dir /data/application/redis/data  #本地数据库存放持久化数据的目录该目录-----需要存在
pidfile /var/run/redis_6379.pid  #定义pid文件
logfile /var/log/redis.log  #定义log文件

---创建存放数据的目录
[root@redis-master redis]# mkdir /data/application/redis/data

---配置redis为systemctl启动
[root@redis-master redis]# cd /lib/systemd/system
[root@redis-master system]# vim 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

启动服务:
[root@redis-master system]# systemctl daemon-reload
[root@redis-master system]# systemctl start redis.service

2、登录Redis

[root@redis-master system]# cd /data/application/redis/src/
[root@redis-master src]# ./redis-cli -h 192.168.124.100 -p 6379
192.168.246.202:6379> ping     ---测试redis是否可以用
PONG
192.168.246.202:6379> set name newrain    #设置key--name,并设置值
OK
192.168.246.202:6379> get name    #获取到key
"newrain"
3、redis的相关工具
./redis-benchmark     #用于进行redis性能测试的工具
./redis-check-dump    #用于修复出问题的dump.rdb文件
./redis-cli           #redis的客户端
./redis-server        #redis的服务端
./redis-check-aof     #用于修复出问题的AOF文件
./redis-sentinel      #用于集群管理

三、数据持久化

开启持久化功能后,重启redis,数据会自动通过持久化文件恢复!

1、redis持久化 ---两种方式RDB、AOF
  1. RDB:是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上。
    特点:周期性、不影响数据写入、高效性、完整性较差。
  2. AOF:将redis执行过的所有指令记录下来,在下次redis重新启动时,把之前写的指令从前到后再重复执行一遍,就可以实现数据恢复了。
    特点:实时性、完整性较好、体积大(记录数据的指令,删除数据的指令都被记录下来)
2、持久化配置

1、RDB默认开启

[root@redis-master src]# cd ..
[root@redis-master redis]# vim redis.conf
#dbfilename:持久化数据存储在本地的文件
dbfilename dump.rdb
#dir:持久化数据存储在本地的路径
dir /data/application/redis/data
##snapshot触发的时机,save <seconds> <changes>  
##如下为900秒后,至少有一个变更操作,才会snapshot  
##对于此值的设置,需要谨慎,评估系统的变更操作密集程度  
##可以通过“save “”来关闭snapshot功能  
#save时间,以下分别表示更改了1个key时间隔900s进行持久化存储;更改了10个key300s进行存储;更改10000个key60s进行存储。
save 900 1
save 300 10
save 60 10000
##当snapshot时出现错误无法继续时,是否阻塞客户端“变更操作”,“错误”可能因为磁盘已满/磁盘故障/OS级别异常等  
stop-writes-on-bgsave-error yes  
##是否启用rdb文件压缩,默认为“yes”,压缩往往意味着“额外的cpu消耗”,同时也意味这较小的文件尺寸以及较短的网络传输时间  
rdbcompression yes 

2、客户端使用命令进行持久化sava存储

方式一:
[root@redis-master src]# ./redis-cli -h 192.168.124.100 -p 6379 save     #前台进行存储
OK
方式二:
[root@redis-master src]# ./redis-cli -h 192.168.124.100 -p 6379 bgsave  #后台进行存储

注意:每次快照持久化都是将内存数据完整写入到磁盘一次,并不是增量的只同步新数据。如果数据量大的话,而且写操作比较多,必然会引起大量的磁盘io操作,可能会严重影响性能。
save方式:持久化前面的所有数据(rdb模式没开时,后续的数据不会进行备份)

3、AOF默认关闭--开启

[root@redis-master src]# cd ..
[root@redis-master redis]# vim redis.conf
修改如下:
appendonly yes

1、只有在yes下,AOF重写/文件同步等特性才会生效
2、指定AOF文件名称appendfilename appendonly.aof
3、指定aof操作中文件同步策略,有三个合法值:always everysec no,默认为everysec appendfsync everysec
4、触发aof rewrite的最小文件尺寸 auto-aof-rewrite-min-size 64mb
5、当Aof log增长超过指定比例时,重写log file, 设置为0表示不自动重写Aof 日志,重写是为了使aof体积保持最小,而确保保存最完整的数据。
auto-aof-rewrite-percentage 100

四、Redis主从配置

1、主从用法
  1. redis支持主从同步,也支持一主多从以及多级结构。
  2. 主从同步时异步进行。主从同步不会影响主逻辑,也不会降低redis的处理性能。
  3. 主从结构中,从服务器为只读模式,这样避免从服务器的数据被误修改。但是从服务器可以接受CONFIG等指令,因此不应该直接暴露到不安全的网络环境中。
2、主从同步原理

从服务器会向主服务器发出SYNC指令,当主服务器接到此命令后,就会调用BGSAVE指令来创建一个子进程专门进行数据持久化工作。也就是将主服务器的数据写入RDB文件中,在数据持久化期间,主服务器将执行的写指令都缓存在内存中。

BGSAVE指令执行结束,主服务器将持久化好的RDB文件发送给从服务器,从服务器接受此文件后将其存储到磁盘上,然后再将其读取到文件中。这个动作结束后,主服务器会将这段时间缓存的写指令再以redis协议的格式发送给从服务器。 image.png

五、redis-sentinel ---哨兵模式

1、哨兵简介

Sentinel哨兵是用于监控Redis集群Master状态的工具。

2、作用
  1. Master状态检测
  2. Master异常, 则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave
  3. 主从切换后, master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换
3、工作模式
  1. 每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令
  2. 如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线
  3. 如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一次的频率确认Master的确进入了主观下线状态
    4.当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态, 则Master会被标记为客观下线
5、配种哨兵模式
1. 每台机器上修改redis主配置文件redis.conf文件设置:bind 0.0.0.0
2. 每台机器上修改sentinel.conf配置文件:修改如下配置
[root@redis-master src]# cd ..
[root@redis-master redis]# vim sentinel.conf
sentinel monitor mymaster 10.0.0.137 6379 2      #当集群中有2个sentinel认为master死了时,才能真正认为该master已经不可用了。 (slave上面写的是master的ip,master写自己ip)
sentinel down-after-milliseconds mymaster 3000   #单位毫秒
sentinel failover-timeout mymaster 10000         #若sentinel在该配置值内未能完成failover(故障转移)操作(即故障时master/slave自动切换),则认为本次failover失败。
protected-mode no                                #关闭加密模式--新添加到sentinel配置文件中

3. 每台机器启动哨兵服务
[root@redis-master redis]# ./src/redis-sentinel sentinel.conf &     #放后台执行

将master的哨兵模式退出,再将redis服务stop了,在两台slave上面查看其中一台是否切换为master:(没有优先级,为随机切换)

[root@redis-master redis]# systemctl stop redis.service
登录slave服务器查看有没有切换
[root@redis-slave-1 redis]# ./src/redis-cli
127.0.0.1:6379> info replication

6、redis有哪些好处

1、速度快,数据存在内存,可直接查询。
2、支持丰富数据类型,支持string、list、set、sorted set,hash
3、支持事务,操作都是原子性(数据的更改要么全部执行要么全部不执行)
4、丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

7、redis安全加密

客户端在向redis-server发送请求之前,先进行密码验证。当你的redis-server处于一个不太可信的网络环境中时,相信你会用上这个功能。由于redis性能非常高,所以每秒钟可以完成多达15万次的密码尝试,所以你最好设置一个足够复杂的密码,否则很容易被黑客破解。
requirepass 1122334

相关文章

  • Redis 学习笔记

    Redis 学习笔记 原文:硬核!16000 字 Redis 面试知识点总结,建议收藏! Redis 基础知识 R...

  • redis的安装与启动以及注意事项

    redis的介绍就不说了,能看到这篇文章的人基本都知道redis是做什么的,近期做一个redis知识点的总结,后期...

  • Redis知识点总结

    单key大小 Redis限制每个String类型value大小不超过512MB, 实际开发中,不要超过10KB,否...

  • Redis知识点总结

    一、redis介绍 redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Val...

  • Redis知识点总结

    NoSQL介绍和redis介绍 not only SQL:非关系型数据库; 作用:应用于海量数据用户数据的前提下的...

  • redis知识点总结

    redis 1.redis含义 redis是一个开源的使用ANSI C编写、遵循BSD协议(允许使用者二次开发)、...

  • Redis——面试知识点总结

    本文是我自己在秋招复习时的读书笔记,整理的知识点,也是为了防止忘记,尊重劳动成果,转载注明出处哦!如果你也喜欢,那...

  • redis常用知识点总结

    Redis基础概念 Redis能够提供针对k-v型值的缓存及数据存储服务,它的主要特色归纳如下: 单线程工作模式 ...

  • Redis常用知识点总结

    命令 远程服务器上运行命令 语法:$ redis-cli -h host -p port -a password ...

  • Redis 学习知识点总结

    简介 本文的主要目的就是对之前看过的Redis相关的文章做一个简单的提纲,方便以后汇总复习。 基础知识 使用jav...

网友评论

      本文标题:Redis知识点总结

      本文链接:https://www.haomeiwen.com/subject/fvceghtx.html