【基础组件19】redis入门(一)简介、哨兵模式、集群搭建、常用命令、性能高可用、高并发概述
哨兵模式,集群搭建参考:
https://blog.csdn.net/yangshangwei/article/details/82899159 (主要看这个)
https://blog.csdn.net/q649381130/article/details/79931791
https://blog.csdn.net/xujiamin0022016/article/details/82194616
redis 简介参考:
https://blog.csdn.net/middleware2018/article/details/80355418
redis教程参考:
https://www.bilibili.com/video/av49517046?p=2
一、redis简介
1.redis 是一个完全开源免费的,高性能的、NoSQL的、key-value 数据库,可基于内存,亦可持久化的 key-value 数据库
redis 有0-15 共16个数据库,连接客户端后,若不选择数据库,则默认在数据库0
2.关系型数据库SQL:表与表之间建立关联关系
非关系型数据库NOSQL:数据与数据之间没有关联关系, 常见的有四种类型:key-value存储数据库(redis),列式存储数据库(hbase), 文件存储数据库(hdfs),图数据库(NEO4J)
3. 两者特点比对:
4.redis的特点:
redis 的读写性能极高:
读支持11万次/秒,写支持8万次/秒
原因:redis是C语言编写的,机器语言,基于内存的存储,直接从内存读,(省略了从硬盘到内存的过程)
5.redis应用场景(缓存热点数据,经常会被查询到)
redis支持16个库
6.redis的缺点:
不过,对于互联网的今天,硬件已经不是问题,只要能提供热点数据的高性能查询
二、redis安装
1.安装gcc环境
2.编译
3.编译后的安装
4.安装成功
5.启动服务
6.连接redis客户端
7. redis.conf配置文件修改
配置文件在安装包解压目录下
8.redis.conf 配置文件详解
1)地址需改为服务器地址,否则开发无法远程访问redis, 只能本机本地访问
2)
3)
4)最大内存限制,默认256M
占用内存过高,会导致内存溢出,redis宕机
5)守护进程可以不改为yes, nohup 启动也可以
三、客户端连接redis
1.keys * 查看所有key
set key value 设置Key value
get key 获取key值
四、关闭redis
五、Redis 常用命令
1.del key 删除key
删除key, 成功返回1,失败返回0
可一次删除多个key 直接跟在del 后即可
2.dump key 持久化key
序列化某个key到硬盘,并返回key值
3.exists key 检查给定key是否存在
存在,返回1;不存在,返回0
4. ttl key 查看指定key剩余存活时间 (秒)
pttl key (毫秒)
-1 代表永久存活
5. expire key second 设置给定key存活时间(秒)
pexpire key milesecond (毫秒)
-2代表已消失了,过期了
举例:用户小红的ID为100, 修改用户小红时,会把key 存入redis, 这样别人从redis查到 ID 100 正在修改,就不能去修改这个用户了,
等修改完用户,再让key 消失过期掉。这就是锁。key value命名可以是: 财务_1:ID100 财务_2:ID101 代表相同类型业务下的不同数据
6.persist key 移除给定key的过期时间,key将永久保持
7.keys pattern 查找通配符匹配的key
8.rename key newkey 修改key名称
9.move key db 将给定key从当前数据库移动到新库
10. type key 返回key所存储值的类型
六.redis实际应用场景
3小时后活动信息就不存在了,如一些限时促销活动,或者排行榜,当天过了,就不存在了
手机验证码(120秒内有效),密码错误5次后,15分钟内不许登录等
监控项目应用场景
场景1:用户权限缓存
SpringBoot项目+Shiro(权限框架)+Redis(缓存)集成
参考:https://www.cnblogs.com/wdzhz/p/12051202.html
说明:
七、key的命名规范
key命名不可以重复。一个key对应一个value
行业的规范用冒号:
redis的命令不区分大小写,但是key的命名是区分大小写的
key命名举例:(行业的规范用冒号:,不用下划线,下划线可能会和下划线命名的列名无法区分)
八、redis支持的五种数据类型(value)
1.string类型,是二进制安全的
左边频繁的编码解码,右边不需要频繁的编码解码,是C语言,机器语言编写的redis
2.string命令、赋值语法、取值语法
示例1:
SETNX key value 面试常考命令,解决分布式锁的问题
示例2:
示例3:getset key new_value 先取值,再赋值
示例4:incr key 第一次执行,不存在,则自动赋value为1,第二次执行,第三次执行,则valure自增
示例5:decr key 自减少,可尝试错误密码登录次数
示例6:incrby key 10 设定自增值, 自增幅度
示例7:decrby key 10 设置自减少,自减幅度
3.string类型应用场景:
string类型用得最多,公司通常统一使用string类型,方便管理
4.hash命令(P10-P29课以后再听,基本string类型就是满足项目使用的了)
省略!!!!
https://www.bilibili.com/video/av49517046?p=10
javabean 一个对象
九、高可用、高并发基本概述
高可用(单点故障、容错性)
高并发(吞吐量)
高并发:同一个时间段内,处理多个请求
如12306网站, 8点开始抢票,则8点会有多个线程去发请求
十、提升系统的并发能力
垂直扩展:增加单机硬件性能,如给环卫工人配清洁车,这样原本1个人只能扫一个街区的,现在可以扫两个街区了,提高了吞吐量
水平扩展:增加节点,增加服务器数量,如增加10个环卫工人,这样也提高了吞吐量
十一、Redis的主从复制
https://www.bilibili.com/video/av49517046?p=31