• 【中间件】redis部分理论


    五大数据类型

    String

    方法用法
    set a b插入一条键为a,值为b的数据(如果有空格,字符串需加引号)
    get a查询键为a的值
    mset a x b y c z添加多条数据a:x, b:y, c:z
    mget a b c查询多条数据a, b, c
    append a xyz在a的值后面加一段xyz(字符串拼接)
    strlen a查看a的字符串长度
    incr nn的值自增(n++,值为数字类型)
    decr nn的值自减(n- -)
    incrby n 10n的值加10
    decrby n 3n的值减3

    List

    方法用法
    lpush list a左插入list值a
    rpush list b右插入list值b
    lpop list移除list最左边的一个值
    rpop list移除list最右边的一个值
    lrabge list 0 -1查询list第0到倒数第1个元素,即全部元素
    lrabge list 0 2查询list第0到第2个元素,共3个
    lindex list 1查询list的第1个值(0开始)
    llen list获取list的长度
    lrem list 2 a移除list中至多2个a(个数为0时表示1个)
    ltrim list 1 2截取list的第1到2个元素,其他的删除
    rpoplpush list list1将list的最后一个元素移到list1里去
    lset list 0 a把list的第0个元素改为a
    linsert list after a b在list的a后加一个b
    linsert list before a b在list的a前加一个b

    Set

    去重集合

    方法用法
    sadd set a b c向set里插入a, b, c
    smembers set查看set的所有数据
    sismember set a判断a在不在set里(在1,不在0)
    scard set查看set的长度
    srem set a移除set里的a
    srandmember set 2set里随机取2个元素
    spop set 3set里随机删除3个元素
    smove set set1 a把set的a移到set1里
    sdiff set1 set2set1和set2的差集
    sinter set1 set2set1和set2的交集
    sunion set1 set2set1和set2的并集

    Hash

    方法用法
    hset hash a b在hash里插入a:b
    hget hash a获取hash里a的值
    hgetall hash查询hash里所有的元素(键值都有)
    hdel hash a c删除hash里的a, c所对应的键值对
    hlen hash获取hash的长度
    hexists hash a判断hash存不存在a(1存在,0不存在)
    hkeys hash获取所有的key
    hvals hash获取所有的value
    hincrby hash a 2给hash里a的值+2
    hincrby hash a -3给hash里a的值-3
    hsetnx hash a b在hash里加a:b,成功1,已有0

    zSet

    有序集合
    -inf 负无穷 +inf正无穷

    方法用法
    zadd zset a x b y c z向zset添加a:x, b:y, c:z
    zrange zset 0 -1查询zset中第0到第-1个元素(全部)
    zrangebyscore zset -inf +inf正序排列zset
    zrangebyscore zset 0 3正序排列zset,取值在0-3之间的
    zrevrange zset 1 -1倒序排列zset取第1到-1个的值
    zrem zset x y移除值为x, y的元素
    zcard zset查看zset的元素个数
    zcount zset 0 2取键在0-2之间的元素个数

    事务和乐观锁

    multi  #开启事务
    discard  #放弃事务
    exec  #执行事务
    
    • 1
    • 2
    • 3
    watch money #监视money的值,即加上乐观锁(在事务中使用)
    
    • 1

    乐观锁:默认不会有其他程序使用这个变量,只有在这个变量将要发生变化是,比较一下数据有没有被变动,再决定事务是否能成功执行。

    悲观锁:默认会有其他程序使用这个变量,所以会阻止任何程序访问,缺点是浪费资源

    主从复制

    • 主节点复制到从节点(单向)
    • 一般主节点用于写操作,从节点用于读操作

    负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

    slaveof x.x.x.x port #将某台主机的某个端口作为自己的主节点
    
    • 1

    如果机器宕机、断电等,主从关系就会消失,所以可以通过修改配置文件确定主从关系。

    slaveof no one #从机可以用这个命令让自己变为主机
    
    • 1

    哨兵模式

    配置

    1. 修改哨兵配置文件 sentinel.conf
    # sentinel monitor 被监控的名称 主节点主机号 主节点端口号 监控数
    sentinel monitor myredis 127.0.0.1 6379 1
    
    • 1
    • 2

    票数的意思是,在多哨兵模式下,某个从节点只有获得了指定票数的哨兵的投票,才能成为主节点,一般来说票数默认填 1

    1. 开启哨兵模式
    redis-sentinel sentinel.conf 
    
    • 1

    原理

    哨兵会以一定的频率向所有节点发送ping命令,距离最近一次收到有效回复一定时间后,会被标记为主观下线状态,然后其他的哨兵会以更快的频率确定主节点的状态,超过一定数量的哨兵确定了主节点的下线状态后,主节点会被标记为客观下线状态,这时候就会投票挑选从节点替换为主节点。
    选出来之后,通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。

    缓存穿透、击穿、雪崩

    穿透:大量的恶意请求,请求了一个redis中没有的值,导致直接请求到了持久层数据库(mysql),这样会给持久层数据库带来巨大压力

    击穿:有一个redis的key承受着大量的访问,突然key到期了,访问直接请求到持久层数据库

    雪崩:多个redis的key承受着大量访问,突然很多的key几乎同时到期了,访问直接请求到了持久层数据库

  • 相关阅读:
    allatori8.0文档翻译-第四步-单一jar打包
    软件工程与计算总结(十五)详细设计中面向对象方法下的信息隐藏
    Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错的问题
    docker容器编排原来这么丝滑~
    链表面试题-刷题
    充气泵绝压型压力传感器
    MySQL安装与配置
    CentOS8克隆虚拟机修改IP,错误:未知的连接 “ens160“
    【网路安全 --- Linux,window常用命令】网络安全领域,Linux和Windows常用命令,记住这些就够了,收藏起来学习吧!!
    Python数据分析实战-爬取以某个关键词搜索的最新的500条新闻的标题和链接(附源码和实现效果)
  • 原文地址:https://blog.csdn.net/weixin_52122251/article/details/126351594