【中间件】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  #执行事务
watch money #监视money的值,即加上乐观锁(在事务中使用)

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

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

主从复制

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

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

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

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

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

哨兵模式

配置

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

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

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

原理

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

缓存穿透、击穿、雪崩

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新手且笨蛋37

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值