Redis基本介绍以及使用

  1. 简介

redis是一个非关系型数据库,他是通过key-value进行存储的,有五种常见操作类型,分别是:string,set,list,hash,zset,为了保证效率,数据都是缓存在内存中,所以读写快。 默认是单线程操作

2. 安装以及启动

默认安装在linux系统上

必要条件是必须要有c语言的编译环境

gcc --version    #监测是否有c语言的编译环境,如果没有就直接安装

#编译环境
yum install centos-release-scl scl-utils-build
yum install -y devtoolset-8-toolchain
scl enable devtoolset-8 bash

当环境没有问题的时候就可以下载redis的安装包了,我是直接放进去的,测试版本用的6.2.1

链接:https://pan.baidu.com/s/1kBeqz0SR5ZZqJEQrgWqHYA

提取码:gata

我直接放入到了/usr/local中

之后直接解压

tar -zxvf redis-6.2.1.tar.gz   #解压当前文件夹

解压出来的名称是redis-6.2.1,然后直接改名字
mv redis-6.2.1 redis
#进入到redis当中,进行编译
cd /usr/local/redis
make 

#如果没有编译好c语言的环境就会报错,然后直接执行
make distclean #  如果没有报错不用执行这部操作

#make没有问题之后直接进行安装
make install #此命令会默认给你安装到/usr/local/bin的目录中去
#执行完毕之后我们先进行备份conf文件,先进入到/usr/local/redis中,然后进行备份
cd /usr/local/redis 
cp redis.conf redis.conf.bk 
#备份完成之后直接进入redis.conf进行一个小改动
vim redis.conf
#通过命令::set nu 打开行数,然后找到
#然后将no改为yes,意思就是可以通过后台命令进行启动
#之后直接:wq退出即可
#直接执行命令进行启动
redis-server /usr/local/redis/redis.conf 
#redis-server 是启动命令,后边的是指定路径的配置文件 
redis-cli 
#执行完毕后我们成功的进入到了我们的redis中,至此redis安装完毕并且启动成功

#查看redis
ps -ef | grep redis 
#杀死进程
kill -9 你的进程号
3. 常见的五种操作类型String Lsit Set Hash Zset

具题的操作太多了,而且网上很多就不一一 列举了,

http://www.17bigdata.com/book/redis/REDISMingLing/REDISZiFuChuanSTRING.html

这个网址就基本够用了

#以下所讲完成一个就关闭redis,然后配置完成了再重新启动

#退出命令  shutdown 
# exit
#或者直接杀进程

4. 发布订阅
SUBSCRIBE zhangsan #发布 关键字SUBSCRIBE,
publish   zhangsan  1111 #订阅   关键字publish 
#这时zhangsan这个发布者就能看到你发送的111

#红色涂掉的就是发布者的名称

5. 持久化 RDB AOF
RDB

#redis自带持久化功能,RDB。比如说我自身的目录/usr/local/bin 中

#这个文件就类似于数据库的备份文件,他的备份条件可以根据自己的需求进行改变

#首先进入redis.conf
vim /usr/local/redis/redis.conf
#然后我们找到dbfilename这个字段,可以通过/dbfilename进行查找

#最后那个代表20秒内有3个key的值被修改,这个作为持久化的条件,也就是说满足了其中一个就会 执行,例如以20秒为周期,如果改动的超过三个了就执行,如果20秒内没有超过那就不进行备份

AOF

#aof是默认不开启的,需要我们自己主动开启,当AOF与rdb同时开启时,redis会默认执行aof!

6. 主从复制

#读写分离:规则,一主多从,也就是一个爹多个孩;只有主可以进行写,从只能进行读。通俗点就是大人跟小孩:我是父亲,我可以有很多孩子,但是这些孩子只能有我一个爹,而且我负责赚钱,孩子没有赚钱的能力,只能从我这拿了去花。

#第一步先创建几个redis.conf文件这样我们可以做个伪主从,因为真正的必须至少也是两台服务器以上
#创建一个文件夹
mkdir  /usr/local/myRedis  
#第二步将创建不同的redis.conf
vim redis6379.conf
#直接添加配置信息即可
include /myredis/redis.conf
pidfile "/var/run/redis_6379.pid"
port 6379
dbfilename "dump6379.rdb"
#然后直接:wq保存退出即可,同时复制出6380/6381 文件
cp redis6379.conf redis6380.conf
cp redis6379.conf redis6381.conf
#进入6380/6381中修改信息
vim redis6380.conf 
:%s/6379/6380  #替换的意思,将所有的6379转换为6380;6381同理!
#直接启动是这三个
redis-server redis6379.conf
redis-server redis6380.conf
redis-server redis6381.conf
#进入三个不同的redis
redis-cli -p 6379 #-p代表进入那个端口的redis
info replication #输入命令可以查看主从信息,三个都是master,都是主,因为还没有配置从
#进入6380/6381配置从
slaveof 127.0.0.1 6379   #配置从,主是6379 的端口
#此时在输入info replication会发现6380显示的是slaveof 他的主就是6379 
#6381一样的配置就行,需要注意的是当从挂掉之后再连接上来会变成主,需要手动变为从,
#如果主挂掉之后从还是从,不会变成主,因为还没有建立哨兵以及配置
#可以手动完成 使用命令   
slaveof  no one 
#会使当前服务器变成主
7. 哨兵机制

#自动监听,如果主机完蛋了就从从机中选择有一个自动变成主机

#需要添加一个配置文件,名称为sentinel.conf
vim sentinel.conf 
#里边的内容为
sentinel monitor mymaster 127.0.0.1 6379 1
#其中mymaster为监控对象起的服务器名称, 1 为至少有多少个哨兵同意迁移的数量
#启动sentinel
redis-sentinel  sentinel.conf 
#然后再次启动redis,设置主从,之后将主挂掉,等着一会就会发现sentinel中弹出消息提示,你的6379挂掉了,6380或者6381其中的一个变成了主机
#当你的6379再次上线,他会变成从机,不会变成主机
8. 集群

#集群相当于是整合了所有的服务器,你可以从6379进入到6399,也可以返回来,相当与是一个连起来的屋子,你进门在客厅,但是你的充钱器在你们物理,你可以直接从客厅进去,然后你想吃东西,可以从你的屋子进入到厨房,意思就是东西是分屋放的,但是房屋是打通的,需要什么你就去哪个屋里

#配置集群需要先关闭你的aof持久化,然后删除掉之前的aof以及rdb的记录文件,还要删除你的所有的redis63**.conf,因为接下来我们需要重新配置,也可以留下来一个6379,我们修改这个,然后再进行复制。

rm -rf redis638* #删除以redis638开头的所有文件,其他文件也是,到最后你的文件夹中只剩下了redis6379.conf
#打开你的redis6379.conf
vim redis6379.conf 
#只保留之前的配置的
include /home/bigdata/redis.conf
port 6379
pidfile "/var/run/redis_6379.pid"
dbfilename "dump6379.rdb"
#其他的都删除,之后在添加
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
#然后:wq进行退出
#同理复制出80 81 89 90 91 五个端口,加上79正好六个

#要想启动集群模式需要进入到redis的src目录当中
cd /usr/local/redis/src
ls  #查看里边都有什么

#执行此命令
redis-cli --cluster create --cluster-replicas 1 192.168.52.129:6379 
192.168.52.129:6380 192.168.52.129:6381 
192.168.52.129:6389 192.168.52.129:6390 192.168.52.129:6391
#--replicas 1 采用最简单的方式配置集群,一台主机,一台从机,正好三组。
#进入到集群中
redis-cli -c -p 6379 #–c 参数实现自动重定向,-p是端口,其实那个端口都无所谓
#通过 cluster nodes 命令查看集群信息

#一个Redis 集群包含 16384 个插槽(hash slot数据库中的每个键都属于这16384 个插槽的其中一个

集群使用公式CRC16(key) % 16384 来计算键 key 属于哪个槽,其中CRC16(key) 语句用于计算键key 的CRC16 校验和。

集群中的每个节点负责处理一部分插槽。举个例子,如果一个集群可以有主节点,其中:

节点A 负责处理 0 号至5460 号插槽。

节点B 负责处理 5461 号至10922 号插槽。

节点C 负责处理 10923 号至16383 号插槽。

#可以直接进行写的操作,但是不能批量写入

#可以通过这种方式进行批量的写

9. 整个springBoot

通过jedis进行的整合,直接参考jdeis引入依赖配置redis,添加conf即可使用!

10. redis常见的三种问题解决方式
 缓存穿透:原因大量的无效url或者参数进行访问
 问题解决:即使是空值也进行缓存,设置访问白名单,实时监控设置黑名单,布隆过滤器
 缓存击穿:极短的时间内,大量数据访问同一个数据,或者url时会发生缓存击穿
 解决方式:提前设置redis中的热门数据,或者添加锁,也可以进行限流
 缓存雪崩:同一时间内大量的redis数据过期,而且这个时候大量的数据去访问这个过期数据
 解决方式:添加锁、队列,或者使用多层缓存redis+nginx,设置过期标志进行更新、将缓存过期时间分散开
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值