redis特点:
1.这些数据类型都支持 push/pop. add/remove 及取交集并集和差集及更丰富的操作
2.Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件中进行持久化
3.单线路+IO多路复用
4.redis操作是原子性操作
redis 单线程模型:
Redis 内部使用文件事件处理器 file event handler ,这个文件事件处理器是单线程的,所以 Redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,将产生事件的 socket 压入内存队列中,事件分派器根据 socket 上的事件类型来选择对应的事件处理器进行处理。
文件事件处理器的结构包含4个部分:①多个socket;②IO多路复用程序;③文件事件分派器;④事件处理器(命令请求处理器,命令回复处理器,连接应答处理器等等)。
当被监听的套接字准备好执行连接应答(accept)、读取(read)、写入(write)、关闭(close)等操作时,与操作相对应的文件事件就会产生,这时文件事件处理器就会调用套接字之前关联好的事件处理器来处理这些事件。
文件事件处理器是单线程模式运行的,但是通过IO多路复用机制监听多个socket,并根据socket目前执行的任务来为套接字关联不同的事件处理器。可以实现高性能的网络通信模型。又可以跟内部其他单线程的模块进行对接,保证了Redis内部的线程模型的简单性。
redis默认端口:6379
默认16个数据库。默认使用0号库
redis在linux下安装步骤
- 检测是否安装C语言环境 如果没有安 gcc -version
- 如果没有安装 通过 yum install gcc
- 解压redis安装包 同时在redis文件目录 执行make命令
- 执行make命令后 执行make install
redis.conf配置:
- protected-mode yes 只支持本机访问 no 支持远程访问
- tcp-backlog 511 设置tcp的backlog , backlog 其实是一个连接队列 , backlog队列总和=未完成三E次握手队列+已经完成三次握手队列。。在高并发环境下你需要一个高backlog值来避免慢客户端连接问题。。
- timeout 0 0代表永不超时 超时时间单位秒
- tep-keepalive 300 每隔300s判断是否连接 不连接释放连接
- daemonize 设置后台启动
- logleval debug verbose notice【生产环境】
- logfiile 日志输出路径
- database 16 默认16个数据库
- requirepass : 设置redis登陆密码
- maxclients 10000 客户端最大连接数 大于此连接数拒绝访问
- maxmemory 内存最大值
redis:修改配置文件内容两种方式
- 第一种直接修改redis安装目录下的 redsi.conf 目录下的内容
- 进入 redis 通过 config get 配置文件参数名 获取
- 进入redis 通过 config set 配置文件参数名 value 来设置值
redis启动方式:
- 前台启动 执行redis-server 但是有缺点 会让redis再关闭窗口后直接停止
- 后台启动 修改redis.conf 文件 找到 daemonize 将no修改成yes 实现后台启动 改成后台启动' 进入 usr/local/ 执行 redis-server /conf所在目录+redis.conf
- redis 进入edis命令 redis-cli
- redis-cli -p 端口 多个通过加端口的方式进入 或者添加ip redis-cli -h ip -p 端口方式进入
- kill -9 进程号 关闭redis 或者在redis中直接shutdown
redis主从配置:[一主多从:单台虚拟机,从机下也可以继续添加他的从机]
第一种方式:【单台机器实现一主多从配置】
- 复制redis的默认配置文件到自己新创建目录
- 创建多个配置文件 命名方式随意 内部定制如下
include /myredis/redis.conf
pidfile /var/run/redis 6379.pid
port 6379
dbfilename dump6379.rdb
- 将redis默认的.conf文件与自己新加的conf文件放到一起
- 添加主从配置:在想要做从机上执行 slaveof ip 端口 当前服务器默认变成从机
- 通过 info replication 可以查看 主机 从机状态
第二种方式:[一主多从:多台虚拟机]
- 复制redsi配置文件 自己定义 一个新文件或者用原有文件不复制
- 在主机配置bind配置中默认填写自己的主机ip地址 默认不添加 从机无法被访问
- 从机中执行slaveof 命令 slaveof ip port 如果添加账号密码 需要进行验证 如果不添加账号密码 可以直接实现主从 默认需要关闭防火墙策略 或者打开端口
- 依次启动redis-server 自己命名的conf文件
- 如果需要将从机变成主机 那么可以再从机上执行slaveof no one 这种情况下主机默认变成从机 从机默认变成主机 属于手动修改。也可以通过哨兵模式
主从复制原理:
- 当从机连接上主服务器之后,从服务器向主服务发送进行数据同步消息
- 主服务器接到从服务器发送过来同步消息,把主服务器数据进行持久化存入到rdb文件,把rdb文件发送从服务器,从服务器拿到rdb进行读取
- 每次主服务器进行写操作之后,和从服务器进行数据同步
注意:redis可以自己搭建多个主从 也可以创建 多台虚拟机 创建多个redis实现主从
- Slave 启动成功连接到master后会发送一个sync命令。
- Master 接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后, master将传送整个数据文件到slave,以完成一次全量全同步。
- 全量复制 :而slave服务在接收到数据库文件数据后,将其存盘