【基础组件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
 
                     
                    
                 
                    
                
 

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号