redis_简介

背景

背景:
    随着数据量,业务量的增大,mysql单机时代架构已经满足不了
    分布式数据库,数据库集群技术也没法解决
    而其中的 个人信息,社交网络,地理位置等数据其实不需要固定格式
    redis 就很适合

定义

C语言编写
基于内存亦可持久化
key-value 数据库

适用场景

适用场景:
    告诉缓存
    消息排行榜
    地图信息分析
    计数器(浏览量)
    简易消息队列系统(发布订阅)

特性

多样数据类型
持久化
事务
集群

springboot整合redis

springboot1.0 默认采用 jedis实现
springboot2.0 默认采用 lettuce实现

jedis:采用的直连,多个线程操作的话是不安全的,如果想要避免,需要使用 jedis pool连接池解决 bio模式
letture:采用netty,实例可以在多个线程间共享,不存在线程不安全的现象 nio模式

redisTemplate

redis.conf

网络配置
    bind 127.0.0.1    绑定ip
    protected-mode yes    是否开启保护模式(一般开)
    port 6379    端口设置
通用配置
    daemonize yes    以后台方式开启,(默认是no,需要开启)
    pidfile /var/run/redis_6379.pid    如果后台运行,需要制定pid进程文件
    日志
    # Specify the server verbosity level.
    # This can be one of:
    # debug (a lot of information, useful for development/testing)    测试
    # verbose (many rarely useful info, but not a mess like the debug level) 一般不用
    # notice (moderately verbose, what you want in production probably)    生产
    # warning (only very important / critical messages are logged)    
    loglevel notice

    logfile ""    日志文件名 + 路径
    databases 16    数据库个数
    always-show-logo yes    是否显示启动 logo
快照
    save 900 1    900s内 至少1个key 修改过 就持久化
    save 300 10    300s内 至少10个key 修改过 就持久化
    save 60 10000    60s内 至少10000个key 修改过 就持久化

    stop-writes-on-bgsave-error yes 持久化过程出错,是否继续工作

    rdbcompression yes    是否压缩 rdb文件 需要消耗cpu资源

    rdbchecksum yes    保存rdb文件时 进行错误检查校验

    dir ./    rdb文件保存目录
安全
    设置密码 详情看指令
限制(CLIENTS)
    maxclients 10000    设置最大客户端的数量
    maxmemory <bytes>    redis 配置最大内存容量
    maxmemory-policy noeviction    内存达到上限之后的处理策略
        volatile-lru:只对设置了过期时间的key进行LRU(默认值) 
        allkeys-lru : 删除lru算法的key   
        volatile-random:随机删除即将过期key   
        allkeys-random:随机删除   
        volatile-ttl : 删除即将过期的   
        noeviction : 永不过期,返回错误
APPEND ONLY MODE 模式 aof
    appendonly no    默认不开启aof持久化,默认是rdb持久化,一般情况rdb够用
    appendfilename "appendonly.aof"    aof持久化文件名
    同步策略
    # appendfsync always    每写一次 同步一次 效率低
    appendfsync everysec    每秒同步一次 会丢失数据
    # appendfsync no    不同步

redis持久化

RDB
    定义
        一旦触发了rdb的持久化策略,redis会fork一个子进程 将redis内存中的数据 写入到一个xxx.rdb文件,
        替换原有的rdb文件,主线程不进行任何io操作,所以性能极高。缺点是:最后一次持久化可能会丢失数据
    触发机制
        save条件满足
        执行flushall命令
        退出redis,也会产生rdb文件
    如何通过rdb文件恢复数据
        只需要将rdb文件放到 启动目录下就可以了
    优点
        适合大规模的数据恢复
        对数据完整性要求不高
    缺点
        意外宕机,数据会丢失
AOF
    定义
        将我们所有的增删改的命令以日志的形式不断的添加,重启服务会将这些命令重新执行一遍
    修复aof文件命令
        redis-check-aof --fix
    优点
        每一次修改都会同步,文件完整性好
    缺点
        aof文件默认比rdb要大,恢复也比rdb要慢
        aod 运行效率更低
    重写规则
总结
    1.rdb持久化方式能够在指定时间内对数据快照存储
    2.aof持久化方式记录每次对数据库写的操作,服务器重启时执行命令来恢复数据
    3.缓存用不到持久化
    4.同时开启两种持久化的情况
        redis优先载入aof文件来恢复原始数据,因为更完整
        rdb更适合数据备份
    5.

消息队列

订阅一个频道
    subscribe key   (命令执行完,会等待读取信息)
发布消息
    publish key value    (所有的订阅者都会接受到消息)

主从复制

定义
    数据的复制是单向的,只能由主节点复制到从节点
    默认情况下,每台redis服务器都是主节点

环境配置(命令)
    查看当前redis信息    info replication
        role:master    #角色:主节点
        connected_slaves:0    #从节点格式:0
    设置当前redis为从节点    slaveof host port
ps:命令只是暂时生效,配置文件是永久生效
特性
    主机可以写,从机不能写只能读!主机中的数据会被从机自动保存
复制原理
    Slavr启动成功连接到master会发送个sync同步命令
    master接收到命令后,后台启动进程,将数据文件一次性传给slave,完成一次同步
    全量复制
    增量复制
哨兵模式(自动选择主节点)
    原理
        哨兵是redis 的一个独立的进程,通过发送命令,等待redis服务器响应,从而监控运行多个redis实例
    配置
        配置哨兵文件
	        sentinel.conf
        配置命令(1:主节点挂掉,自动选举主节点)
	        sentinel monitor myredis host port 1
        启动哨兵    
            redis-sentinel kconfig/sentinel.conf
        概括
            主机宕机,随机投票生成主机,主机回来,自动变为从机
    其他配置(待扩展)

redis缓存穿透和雪崩

定义
    redis缓存没有数据,同一时间高并发查询直接查询Mysql,导致mysql崩溃

1

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值