redis的学习

本文详细介绍Redis的安装方法,包括Yum安装和源码编译安装,并深入讲解Redis的高级特性,如发布订阅、持久化机制(RDB与AOF)、主从同步、哨兵机制及集群配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

redis

redis 是一个开源的,内存中的数据结构存储系统,它可以用作数据库,缓存和消息中间件

 

一 Yum安装redis

1 yum安装

首先查看是否有redis包
yum list redis

安装redis
yum install redis -y


安装好之后,启动redis
systemctl start redis

 2 检查redis是否正常工作

redis-cli     #redis 客户端工具

#进入交换环境后,执行ping,返回PONG表示安装成功
127.0.0.1:6379> ping
PONG

 二  源码安装redis,编译安装

步骤
1 下载redis源码
wget http://download.redis.io/releases/redis-4.0.10.tar.gz

2 解压缩文件
tar -zxf redis-4.0.10.tar.gz

3 切换redis源码目录
cd redis-4.0.10.tar.gz

4 编译源文件
make

5.编译好后,src/目录下有编译好的redis指令

6.make install 安装到指定目录,默认在/usr/local/bin

 启动redis-server 服务端

首先编写配置文件启动redis
	vim /opt/redis-4.0.10/redis.conf 
	
	1.更改bind参数,让redis可以远程访问
		bind 0.0.0.0
	2.更改redis的默认端口
		port 6380
	3.使用redis的密码进行登录
		requirepass 登录redis的密码
	4 退出配置文件,执行如下启动服务
		redis-server redis.conf 

 登录redis客户端

1 通过新的端口和密码登录redis
redis-cli -p 6380
登录后
auth 密码

redis还支持交互式的参数,登录数据库
redis-cli -p 6380  -a  redis的密码  (这个不太安全)

2 通过登录redis,用命令查看redis的密码
config set  requirepass  新的密码     	#设置新密码
config get  requirepass  			#获取当前的密码



过滤出文件的空白行和注释行
grep -v "^#"  redis.conf |   grep  -v "^$"

 

三  redis发布订阅

三个角色,提供的redis命令
1.发布者
    publish  频道  消息        给频道发消息
2.订阅者
    SUBSCRIBE  频道         订阅频道
    PSUBSCRIBE 频道*          支持模糊匹配的订阅
3.频道
    channel  频道名 自定义
    
redis持久化之RDB
1.在配置文件中添加参数,开启rdb功能
redis.conf 写入
    port 6379
    daemonize yes
    logfile /data/6379/redis.log
    dir /data/6379
    dbfilename   s15.rdb
    save 900 1                    #rdb机制 每900秒 有1个修>改记录
    save 300 10                    #每300秒        10个修改
    记录
    save 60  10000                #每60秒内        10000修>改记录
2.开启redis服务端,测试rdb功能
redis-server redis.conf


四   redis持久化之aof
1.开启aof功能,在redis.conf中添加参数
    port 6379
    daemonize yes
    logfile /data/6379/redis.log
    dir /data/6379
    appendonly yes
    appendfsync everysec
2.启动redis服务端,指定aof功能,测试持久化数据




五  redis不重启之rdb数据切换到aof数据
1.准备rdb的redis服务端
    redis-server   s15-redis.conf (注明这是在rdb持久化模式下)

2.切换rdb到aof
redis-cli  登录redis,然后通过命令,激活aof持久化
127.0.0.1:6379>  CONFIG set appendonly yes                #用命令激活aof持久化(临时生效,注意写入到配置文件)
OK
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379>  CONFIG SET save ""             #关闭rdb持久化

2.5 将aof操作,写入到配置文件,永久生效,下次重启后生效
    port 6379
    daemonize yes
    logfile /data/6379/redis.log
    dir /data/6379   

    #dbfilename   s15.rdb
    #save 900 1  
    #save 300 10
    #save 60  10000
    appendonly yes
    appendfsync everysec

3.测试aof数据持久化 ,杀掉redis,重新启动
kill
redis-server s15-redis.conf

4.写入数据,检查aof文件



六 redis的主从同步

1.检查redis数据库信息,主从状态的命令
redis-cli  -p 6379  info  检查数据库信息
redis-cli  -p 6379  info  replication  检查数据库主从信息
 

1.准备三个redis配置文件,通过端口的区分,启动三个redis数据库实例,然后配置主从复制
redis-6379.conf
    port 6379
    daemonize yes
    pidfile /data/6379/redis.pid
    loglevel notice
    logfile "/data/6379/redis.log"
    dbfilename dump.rdb
    dir /data/6379
    
redis-6380.conf
#通过命令快速生成配置文件
sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf
slaveof  127.0.0.1  6379   #指明主库的身份ip 和端口

redis-6381.conf
#通过命令快速生成配置文件
sed "s/6379/6381/g" redis-6379.conf > redis-6381.conf
slaveof  127.0.0.1  6379

2.启动三个数据库实例,检测redis主从同步方案


3.redis主从赋值,故障手动切换,
    1.杀死6379的主库实例
    kill 主库
    
    2.手动切换主从身份
        1.登录 redis-6380 ,通过命令,去掉自己的从库身份,等待连接
            slaoveof no one  
        2.登录redis-6381 ,通过命令,生成新的主任
            slaveof 127.0.0.1 6380  
    
    3.测试新的主从数据同步
    
    
七  redis哨兵
1.什么是哨兵呢?

保护redis主从集群,正常运转,当主库挂掉之后,自动的在从库中挑选新的主库,进行同步

2.redis哨兵的安装配置
    1. 准备三个redis数据库实例(三个配置文件,通过端口区分)
        [root@localhost redis-4.0.10]# redis-server redis-6379.conf
        [root@localhost redis-4.0.10]# redis-server redis-6380.conf
        [root@localhost redis-4.0.10]# redis-server redis-6381.conf
    2.准备三个哨兵,准备三个哨兵的配置文件(仅仅是端口的不同26379,26380,26381)
    -rw-r--r--  1 root root    227 Jan  2 18:44 redis-sentinel-26379.conf
        port 26379  
        dir /var/redis/data/
        logfile "26379.log"

        sentinel monitor s15master 127.0.0.1 6379 2

        sentinel down-after-milliseconds s15master 30000

        sentinel parallel-syncs s15master 1

        sentinel failover-timeout s15master 180000
        daemonize yes


    -rw-r--r--  1 root root    227 Jan  2 18:45 redis-sentinel-26380.conf
        快速生成配置文件
        sed "s/26379/26380/g" redis-sentinel-26379.conf >  redis-sentinel-26380.conf
    -rw-r--r--  1 root root    227 Jan  2 18:46 redis-sentinel-26381.conf
        sed "s/26379/26381/g" redis-sentinel-26379.conf >  redis-sentinel-26381.conf

    3.添加后台运行参数,使得三个哨兵进程,后台运行
[root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26379.conf
[root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26380.conf
[root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26381.conf

    4.启动三个哨兵
        1003  redis-sentinel redis-sentinel-26379.conf
        1007  redis-sentinel redis-sentinel-26380.conf
        1008  redis-sentinel redis-sentinel-26381.conf
        
    5.检查哨兵的通信状态
    redis-cli -p 26379  info sentinel
    查看结果如下之后,表示哨兵正常
        [root@localhost redis-4.0.10]# redis-cli -p 26379  info sentinel
        # Sentinel
        sentinel_masters:1
        sentinel_tilt:0
        sentinel_running_scripts:0
        sentinel_scripts_queue_length:0
        sentinel_simulate_failure_flags:0
        master0:name=s15master,status=ok,address=127.0.0.1:6381,slaves=2,sentinels=3

    6.杀死一个redis主库,6379节点,等待30s以内,检查6380和6381的节点状态
    kill 6379主节点
    redis-cli -p 6380 info replication
    redis-cli -p 6381 info replication
    如果切换的主从身份之后,(原理就是更改redis的配置文件,切换主从身份)
    
    7.恢复6379节点的数据库,查看是否将6379添加为新的slave身份
    
   

redis-cluster安装配置
1.准备6个redis数据库实例,准备6个配置文件redis-{7000....7005}配置文件
    -rw-r--r-- 1 root root 151 Jan  2 19:26 redis-7000.conf
    -rw-r--r-- 1 root root 151 Jan  2 19:27 redis-7001.conf
    -rw-r--r-- 1 root root 151 Jan  2 19:27 redis-7002.conf
    -rw-r--r-- 1 root root 151 Jan  2 19:27 redis-7003.conf
    -rw-r--r-- 1 root root 151 Jan  2 19:27 redis-7004.conf
    -rw-r--r-- 1 root root 151 Jan  2 19:27 redis-7005.conf

2.启动6个redis数据库实例
    [root@localhost s15rediscluster]# redis-server redis-7000.conf
    [root@localhost s15rediscluster]# redis-server redis-7001.conf
    [root@localhost s15rediscluster]# redis-server redis-7002.conf
    [root@localhost s15rediscluster]# redis-server redis-7003.conf
    [root@localhost s15rediscluster]# redis-server redis-7004.conf
    [root@localhost s15rediscluster]# redis-server redis-7005.conf

八   配置ruby语言环境,脚本一键启动redis-cluster
    1.下载ruby语言的源码包,编译安装
        wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
    2.解压缩
        ./configure --prefix=/opt/ruby/       释放makefile
        make && make install     编译且安装
    3.下载安装ruby操作redis的模块包
        wget http://rubygems.org/downloads/redis-3.3.0.gem
        
    4.配置ruby的环境变量
    echo $PATH
    
    vim /etc/profile
    写入最底行
    PATH=$PATH:/opt/ruby/bin/
    读取文件
    source /etc/profile
    
    5.通过ruby的包管理工具去安装redis包,安装后会生成一个redis-trib.rb这个命令
    一键创建redis-cluster 其实就是分配主从关系 以及 槽位分配 slot槽位分配
    /opt/redis-4.0.10/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
    
    6.检查节点主从状态
    redis-cli -p 7000  info replication
    
    7.向redis集群写入数据,查看数据流向
    redis-cli -p 7000    #这里会将key自动的重定向,放到某一个节点的slot槽位中
    set  name  s15
    set  addr shahe 

转载于:https://www.cnblogs.com/mlhz/p/10245364.html

<think>好的,我现在需要帮助用户学习Redis,从入门到精通。首先,用户已经提供了一些参考资料,包括引用1、2、3,我需要结合这些内容来组织回答。 首先,我应该确定用户的需求是什么。用户想要学习Redis的相关知识,从入门到精通。所以回答需要结构清晰,分阶段指导,并且提供学习资料和相关问题。 根据用户提供的引用,引用2提到Redis是内存数据库/缓存/消息队列,所以需要先介绍Redis的基本概念和应用场景。引用1和引用3涉及环境搭建和配置,以及一些参考资料链接,比如优快云的博客和另一篇博客。这些可以作为学习资料的一部分推荐给用户。 接下来,我需要按照系统级指令的要求,确保数学公式正确使用,但Redis相关的内容可能较少涉及数学公式,所以可能不需要太多这方面的处理。但如果有性能分析或算法部分,可能需要使用行内或独立公式,例如时间复杂度O(n)之类的,可以写成$O(n)$。 然后,用户要求生成相关问题,放在最后。需要确保问题与Redis相关,覆盖入门、进阶、配置优化、应用场景、高可用方案以及高级数据结构等方面。 回答的结构应该分为几个部分:入门阶段、进阶阶段、精通阶段,每个阶段推荐资料和重点内容。同时,结合用户提供的引用,例如环境搭建部分可以参考引用1和引用2,HyperLogLog部分可以参考引用3中的链接。 还需要注意引用标识的正确添加,例如在提到环境搭建时引用[^1][^2],在HyperLogLog部分引用[^3]。 最后,检查是否符合所有系统级指令:正确使用LaTeX(如果有的话),中文回答,生成相关问题,引用标识自然添加。同时,确保回答真实可靠,结构清晰,帮助用户逐步学习。 现在开始组织内容: 入门阶段需要介绍Redis的基本概念、安装配置和基础命令。引用2提到Redis是内存数据库,可以作为缓存和消息队列,这部分需要强调。引用1的环境搭建步骤需要整理,比如复制配置文件到/etc/redis,修改配置并启动。可以推荐官方文档和用户提供的优快云博客作为资料。 进阶阶段包括持久化机制、主从复制、哨兵模式、集群部署,以及数据类型的使用场景。需要结合引用中的信息,比如环境配置可能涉及持久化的设置,引用3中的HyperLogLog属于高级数据结构,可以放在进阶或精通阶段。 精通阶段涉及源码分析、性能调优、高可用方案(如Redis Cluster)、高级数据结构(HyperLogLog、Streams)。引用3中的HyperLogLog部分可以作为参考资料。 相关问题需要涵盖各个阶段的内容,例如如何选择数据结构、持久化机制的区别、集群部署步骤、性能优化方法、高可用方案比较,以及HyperLogLog的应用,这些问题可以帮助用户深入学习。 最后,确保所有引用正确对应,例如引用对应环境配置,引用对应Redis定义,引用[^3]对应HyperLogLog的参考链接。</think>### Redis学习路径:从入门到精通 #### 一、**入门阶段** 1. **核心概念** Redis是一个基于内存的键值存储系统,支持多种数据结构(字符串、哈希、列表等),常用于缓存、消息队列和实时数据分析。 关键术语:键值对、持久化(RDB/AOF)、单线程模型、数据类型(如`String`, `Hash`, `List`)。 2. **环境搭建** - **安装步骤**: ```bash # 下载源码编译安装 wget http://download.redis.io/releases/redis-6.2.6.tar.gz tar xzf redis-6.2.6.tar.gz cd redis-6.2.6 make make install ``` - **配置启动**: 复制配置文件到`/etc/redis`目录,修改`redis.conf`(如设置`daemonize yes`后台运行),启动命令:`redis-server /etc/redis/redis.conf`[^1]。 3. **基础操作** 学习`SET/GET`命令、数据类型操作(如`HSET/HGET`)、过期时间设置(`EXPIRE`)等。 **推荐资料**: - [Redis官方文档](https://redis.io/documentation) - [《Redis设计与实现》](http://redisbook.com/)(入门章节) --- #### 二、**进阶阶段** 1. **核心机制** - **持久化**: RDB(快照)通过`SAVE`或`BGSAVE`生成数据快照;AOF(追加日志)记录写操作,提供更高数据安全性。 配置示例: ```bash # redis.conf appendonly yes # 启用AOF appendfsync everysec # 每秒同步 ``` - **高可用**: 主从复制(`replicaof`配置)、哨兵模式(故障自动切换)、Redis Cluster(分布式分片)。 2. **应用场景** - **缓存**:缓存雪崩/穿透/击穿解决方案(如布隆过滤器)。 - **消息队列**:使用`List`实现队列,或`Streams`支持消费者组。 - **实时统计**:利用`HyperLogLog`估算基数(如UV统计)[^3]。 3. **推荐资料**: - [Redis实战](https://book.douban.com/subject/26612779/)(应用案例详解) - [Redis进阶笔记](https://zhangc233.github.io/2021/05/02/Redis/)(含`HyperLogLog`解析) --- #### 三、**精通阶段** 1. **源码与性能优化** - 阅读Redis源码(如事件循环`ae.c`、数据结构`dict.c`)。 - 性能调优:内存碎片整理(`MEMORY PURGE`)、慢查询分析(`SLOWLOG`)、网络瓶颈排查。 2. **高级特性** - **Lua脚本**:原子化执行复杂操作。 - **模块化扩展**:自定义数据类型(如[RedisJSON](https://redis.io/docs/stack/json/))。 - **流处理**:`Streams`支持消息持久化和消费者组。 3. **推荐资料**: - [Redis源码剖析](https://github.com/huangz1990/redis-3.0-annotated)(注释版源码) - [Redis深度历险](https://book.douban.com/subject/30386804/)(原理与优化) --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值