Redis学习
1、Redis安装
(1)下载源码包
(2)解压源码包
tar -zxvf redis-4.0.40.tar.gz
(3)安装gcc
yum install -y gcc
(4)进入解压目录执行
make MALLOC=libc
(5)编译完成后执行如下命令
make install PREFIX=/usr/local/redis
(6)进入/usr/local/redis/bin目录启动redis服务
./redis-server
(7)设置后台运行
设置后台运行,vim redis.conf把daemonize 改为yes
vim redis.conf
daemonize yes
(8)添加开机启动服务
创建redis-server服务
vim /etc/systemd/system/redis-server.service
写入以下内容
[Unit]
Description=The redis-server Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/redis-server /usr/local/redis/redis.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
[Install]
WantedBy=multi-user.target
(9)设置开机启动
systemctl daemon-reload
systemctl start redis-server.service
systemctl enable redis-server.service
(10)给redis-cli创建一个软连接
ln -s /usr/local/redis/bin/redis-cli /usr/bin/redis
2、修改为一切客户端访问
vim redis.conf
# 把bind改成 0.0.0.0
bind 0.0.0.0
3、常用操作
(1)切换库
select 1 # 1表示库id,从0开始
(2)客户端连接
redis-cli -h <主机ip> -p <端口号> -a <passowrd>
4、搭建主从复制架构
只要从结点配置了主结点的id和port即可,配置slaveof
特点 : 主结点可以读写,从节点只读
- master
port 6379
bind 0.0.0.0
- slave1
port 7001
bind 0.0.0.0
slaveof masterip masterport
# 6.0版本
replicaof <masterip> <masterport>
- slave2
prot 7002
bind 0.0.0.0
slaveof masterip msaterport
# 6.0版本
replicaof <masterip> <masterport>
# 启动服务端
redis-server <配置文件的路径>
5、搭建哨兵架构(6.0版本已经使用redis-cli来搭建集群了)
# 1、 创建配置文件
- 在配置文件的同一级创建一个sentinel.conf文件
# 2、配置哨兵,在sentinel.conf文件中填入一下内容
sentinel monitor <被监控的名字(自己的名字)> <ip> <port> 1
# 后面的数字表示启动1个哨兵,投票机制,哨兵的一半发现master宕机,就进行投票
# 3、启动哨兵进行测试
redis-sentinel <配置文件的路径>
# 如:
redis-sentinel /myredis/sentinel.conf
# 在搭建主从复制架构之后,启动哨兵就会自己补全相关配置文件内容
# 修改sentinel.conf,增加
bind 0.0.0.0
# springboot的配置,连接的是sentinel
spring.redis.sentinel.master=<master名字,上面自己输入的名字>
# 这里是哨兵的host:port,多个哨兵用逗号隔开
spring.redis.sentinel.nodes=192.167.43.199:3679,192.168.43.2680
# 每个master主机都需要配置一个哨兵用来监控
6、CRC16算法
1、对集群模式下的所有的key进行CRC16算法,计算的结果始终在0~16383
2、对客户端的key进行CRC16计算时,同一个key多次经过CRC16结果始终一致
3、对客户端的不同key进行CRC16计算,计算的结果会出现key不同的情况
集群 --> Node —> Slot
把Slot(16383个槽)均分到不同的结点上
集群里一个key —> 经过CRC16算法 —> 结果就是 [0, 16383], 然后插入到对应的node上的槽里即可
7、搭建集群
(1)安装运行ruby脚本环境
# 安装ruby 和 rubygems
yum install -y ruby rubygems
# https://rubygems.org/gems/redis/versions/4.2.1
gem install redis
(2)修改配置文件
- 修改的文件内容如下,然后再复制6份
# 端口
port 7000
# 开放所有ip访问
bind 0.0.0.0
# 开启守护进程
daemonize yes
# rdb 备份名修改
dbfilename dump7000.rdb
# 开启aof备份 修改备份文件名
appendonly yes
appendfilename "appendonly7000.aof"
# 开启集群模式
cluster-enabled yes
# 集群的配置文件
cluster-config-file nodes-6379.conf
# 设置集群结点超时时间
cluster-node-timeout 5000
-
复制redis-trib.rb到当前redis-server目录中
-
运行redis-server
redis-server ./redis-cluster/redis-7000.conf
redis-server ./redis-cluster/redis-7001.conf
redis-server ./redis-cluster/redis-7002.conf
redis-server ./redis-cluster/redis-7003.conf
redis-server ./redis-cluster/redis-7004.conf
redis-server ./redis-cluster/redis-7005.conf
redis-server ./redis-cluster/redis-7006.conf
- 运行ruby脚本创建集群
以前的命令
./redis-trib.rb create --replicas 1 192.169.31.9:7000 192.169.31.9:7001 192.169.31.9:7002 192.169.31.9:7003 192.169.31.9:7004 192.169.31.9:7005 192.169.31.9:7006
现在的命令
- -a表示密码
redis-cli -a 123456 --cluster create 192.168.31.9:7000 192.168.31.9:7001 192.168.31.9:7002 192.168.31.9:7003 192.168.31.9:7004 192.168.31.9:7005 192.168.31.9:7006 --cluster-replicas
成功截图
8、SpringBoot连接集群
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
spring.redis.cluster.nodes=192.168.31.9:7000,192.168.31.9:7001,192.168.31.9:7002,192.168.31.9:7003,192.168.31.9:7004,192.168.31.9:7005,192.168.31.9:7006
spring.redis.password=123456
9、使用SpingBoot和Redis实现session共享
只要两步就可以完成
(1)引入jar包
<!--spring-redis-session-->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
(2)配置一下,加上@Configuration和@EnableRedisHttpSession,交给sping去管理,开启ReidsHttpSession
@Configuration
@EnableRedisHttpSession
public class MyRedisSessionConfig {
}