Redis
Redis简介
概念
Redis(REmote Dictionary Server)是一个内存中的数据结构存储系统,它可以用作数据库,缓存和消息中间件。是用C语言开发的一个开源的高性能键值对数据库,是以key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求。
(非关系型的、分布式的、开源的、水平可扩展的)
特征
- 数据间没有必然的关联关系
- 内部采用单线程机制进行工作
- 高性能
- 多数据类型支持
- 字符串类型 string
- 列表类型 list
- 散列类型 hash
- 集合类型 set
- 有序集合类型 sorted_set
- 持久化,可以进行数据灾难恢复
Redis的应用
- 为热点数据加速查询(主要场景),如热点商品、热点新闻、热点资讯、推广类等高访问量信息等
- 任务队列,如秒杀、抢购、购票排队等
- 即时信息查询,如各位排行榜、各类网站访问统计、公交到站信息、在线人数信息(聊天室、网站)、设备信号等
- 时效性信息控制,如验证码控制、投票控制等
- 分布式数据共享,如分布式集群架构中的session分离
- 消息队列
- 分布式锁
Redis主从复制原理
Redis主从复制是指在Redis集群里面Master节点和Slave节点的数据同步的一种机制,简单来说就是把一台Redis服务器的数据复制到其他的Redis服务器里面,其中,负责复制数据来源的节点称为master,被动接收数据同步的节点称为slave。
在Redis里面提供了全量复制
和增量复制
两种模式
(1)全量复制一般是发生在Slave节点初始化的阶段,这个时候需要吧master上所有的数据全部都copy一份,它的具体工作原理是:
- 第一步,Slave节点会向Master发送一个SYNC的命令,Master收到命令以后会生成数据快照
- 第二步,把数据快照发送给Slave节点,Slave节点收到数据以后丢弃旧的数据并且重新载入新的数据,然后对外提供服务
需要注意的是,在主从复制的过程中,Redis并没有采用数据的强一致性,因此会存在一个数据同步的延迟,导致数据的一个不一致的问题
(2)增量复制就是说Master收到数据变更之后,会把变更的数据同步给所有的Slave节点,增量复制的原理: - Master和Slave都会维护一个复制偏移量叫offset,用来表示Master向Slave传递的字节数量,每一次进行增量数据的传递,Master和Slave维护的offset斗湖增加对应的字节数量,Redis只需要根据Offset就可以去实现增量的数据的同步
Redis的下载与安装
安装
- 下载Redis安装包
wget http://download.redis.io/releases/redis-6.0.19.tar.gz
- 解压安装包
tar -zxvf redis-6.0.19.tar.gz
- 安装依赖环境
yum install gcc-c++ -y
- 编译安装
cd redis-6.0.19/
make
make install
- 启动
redis-server
6. 克隆一个终端作为客户端,进入src目录,登录Redis
cd redis-4.0.0/src/
redis-cli
指定端口启动服务
当需要启动多台Redis服务时,可以指定不同的端口号
语法:
服务端
redis-server --port 端口号
例:
客户端
redis-cli -p 端口号
指定配置文件启动服务
- 复制配置文件到另一个文件
cat redis.conf | grep -v "#" | grep -v "^$" > redis-6379.conf
- 创建一个data目录
mkdir data
- 修改文件信息如下:
port 6379
daemonize yes
logfile "6379.log"
dir /root/redis-6.0.19/data
- 启动服务
redis-server 配置文件名
例:
5. 客户端连接
配置文件启动目录管理
- 把redis-6379.conf文件移动到conf文件
mkdir conf
mv redis-6379.conf conf/
- 复制配置文件到另一个文件
cd conf/
cp redis-6379.conf redis-6380.conf
- 修改6380文件的配置信息
port 6380
daemonize yes
logfile "6380.log"
dir /root/redis-6.0.19/data
- 启动
redis-server redis-6380.conf
- 查看
ps -ef | grep redis-
总结
- Redis服务启动
- 默认配置启动
redis-server
redis-server --port 6379
redis-server --port 6380...
- 指定配置文件启动
redis-server redis.conf
redis-server redis-6379.conf
redis-server redis-6380.conf...
redis-server conf/redis-6379.conf
redis-server config/redis-6380.conf...
- Redis客户端连接
- 默认连接
redis-cli
- 连接指定服务器
redis-cli -h 127.0.0.1
redis-cli -p 6379
redis-cli -h 127.0.0.1 -p 6379
- Redis服务端配置
- 基本配置
daemonize yes
# 以守护进程方式启动,使用本启动方式,redis将以服务的形式存在,日志将不再打印到命令窗口中
port 6***
# 设定当前服务启动端口号
dir "/自定义目录/redis/data"
# 设定当前服务文件保存位置,包含日志文件、持久化文件等
logfile "6***.log"
# 设定日志文件名,便于查阅