Redis

Redis简介

概念

Redis(REmote Dictionary Server)是一个内存中的数据结构存储系统,它可以用作数据库,缓存和消息中间件。是用C语言开发的一个开源的高性能键值对数据库,是以key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求。
(非关系型的、分布式的、开源的、水平可扩展的)

特征

  1. 数据间没有必然的关联关系
  2. 内部采用单线程机制进行工作
  3. 高性能
  4. 多数据类型支持
  • 字符串类型 string
  • 列表类型 list
  • 散列类型 hash
  • 集合类型 set
  • 有序集合类型 sorted_set
  1. 持久化,可以进行数据灾难恢复

Redis的应用

  1. 为热点数据加速查询(主要场景),如热点商品、热点新闻、热点资讯、推广类等高访问量信息等
  2. 任务队列,如秒杀、抢购、购票排队等
  3. 即时信息查询,如各位排行榜、各类网站访问统计、公交到站信息、在线人数信息(聊天室、网站)、设备信号等
  4. 时效性信息控制,如验证码控制、投票控制等
  5. 分布式数据共享,如分布式集群架构中的session分离
  6. 消息队列
  7. 分布式锁

Redis主从复制原理

Redis主从复制是指在Redis集群里面Master节点和Slave节点的数据同步的一种机制,简单来说就是把一台Redis服务器的数据复制到其他的Redis服务器里面,其中,负责复制数据来源的节点称为master,被动接收数据同步的节点称为slave。
img
在Redis里面提供了全量复制增量复制两种模式
(1)全量复制一般是发生在Slave节点初始化的阶段,这个时候需要吧master上所有的数据全部都copy一份,它的具体工作原理是:

  • 第一步,Slave节点会向Master发送一个SYNC的命令,Master收到命令以后会生成数据快照
  • 第二步,把数据快照发送给Slave节点,Slave节点收到数据以后丢弃旧的数据并且重新载入新的数据,然后对外提供服务
    需要注意的是,在主从复制的过程中,Redis并没有采用数据的强一致性,因此会存在一个数据同步的延迟,导致数据的一个不一致的问题
    img
    (2)增量复制就是说Master收到数据变更之后,会把变更的数据同步给所有的Slave节点,增量复制的原理:
  • Master和Slave都会维护一个复制偏移量叫offset,用来表示Master向Slave传递的字节数量,每一次进行增量数据的传递,Master和Slave维护的offset斗湖增加对应的字节数量,Redis只需要根据Offset就可以去实现增量的数据的同步
    img

Redis的下载与安装

安装

  1. 下载Redis安装包
wget http://download.redis.io/releases/redis-6.0.19.tar.gz
  1. 解压安装包
tar -zxvf redis-6.0.19.tar.gz 
  1. 安装依赖环境
yum install gcc-c++ -y
  1. 编译安装
cd redis-6.0.19/
make 
make install 
  1. 启动
redis-server 

img
6. 克隆一个终端作为客户端,进入src目录,登录Redis

cd redis-4.0.0/src/
redis-cli

img

指定端口启动服务

当需要启动多台Redis服务时,可以指定不同的端口号
语法:
服务端

redis-server --port 端口号

例:
img
客户端

redis-cli -p 端口号

img

指定配置文件启动服务

  1. 复制配置文件到另一个文件
cat redis.conf | grep -v "#" | grep -v "^$" > redis-6379.conf
  1. 创建一个data目录
mkdir data
  1. 修改文件信息如下:
port 6379
daemonize yes
logfile "6379.log"
dir /root/redis-6.0.19/data
  1. 启动服务
redis-server 配置文件名

例:
img
5. 客户端连接
img

配置文件启动目录管理

  1. 把redis-6379.conf文件移动到conf文件
mkdir conf
mv redis-6379.conf conf/
  1. 复制配置文件到另一个文件
cd conf/
cp redis-6379.conf redis-6380.conf
  1. 修改6380文件的配置信息
port 6380
daemonize yes
logfile "6380.log"
dir /root/redis-6.0.19/data       
  1. 启动
redis-server redis-6380.conf
  1. 查看
ps -ef | grep redis-

img

总结

  1. 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...
  1. Redis客户端连接
  • 默认连接
redis-cli
  • 连接指定服务器
redis-cli -h 127.0.0.1
redis-cli -p 6379
redis-cli -h 127.0.0.1 -p 6379
  1. Redis服务端配置
  • 基本配置
daemonize yes
# 以守护进程方式启动,使用本启动方式,redis将以服务的形式存在,日志将不再打印到命令窗口中

port 6***
# 设定当前服务启动端口号

dir "/自定义目录/redis/data"
# 设定当前服务文件保存位置,包含日志文件、持久化文件等

logfile "6***.log"
# 设定日志文件名,便于查阅
posted @ 2023-05-26 16:20  小肚腩吖  阅读(17)  评论(0编辑  收藏  举报