redis的学习和简单总结

1:redis是什么?

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

下面是官方的bench-mark数据:

测试完成了50个并发执行100000个请求。 设置和获取的值是一个256字节字符串。 Linux box是运行Linux
2.6,这是X3320 Xeon 2.5 ghz。 文本执行使用loopback接口(127.0.0.1)。 结果:读的速度是110000次/s,写的速度是81000次/s 。

redis数据交互的速度是远远高于普通数据库(mysql),最主要的原因是内存有着极快的随机读写速度。

在这里插入图片描述
数据库的增删改查都是与硬盘的随机读写速度有关。

高档的nvme的随机读写速度也就是几百兆每秒,普通的机械硬盘读随机读写仅仅有几十兆,而普通的ddr4内存的随机读写速度达到29-24gb每秒,是硬盘的上百上千倍!


**那么可能有小可爱要问了,既然基于内存的数据库那么好,都用这种数据库不行吗?**
### 1.1:内存的特点:
1:价格昂贵,容量较小:

容量方面:即便是服务器这种内存较大的设备,内存一般也不会超过500g,但是现在服务器硬盘的配置普遍都10t以上了。

价格方面:16g的ddr4内存一般要500块,而800块就可以买到一个西数4t的红盘。

2:断电易失:

内存由于和硬盘设计原理不同,在断电的情况下,数据会丢失,所以单纯用内存存储是不现实的。也因为这一点,我们需要把数据持久化到硬盘。

由于种种原因redis一般不会完全当作数据库用作数据储存,而是基于速度快的特性当作缓存在项目中使用。



2:redis事务和乐观锁:

2.1:事务:

redis可以实现事务,但是redis事务不具有原子性!!!
即便事务中有运行错误,整个事务依然可以运行!

开启事务multi

命令列列直接输入即可

执行事务exec

放弃事务discard

2.1:实现乐观锁:

乐观锁(Optimistic Locking):顾名思义,对加锁持有一种乐观的态度,即先进行业务操作,不到最后一步不进行加锁,"乐观"的认为加锁一定会成功的,在最后一步更新数据的时候再进行加锁。

悲观锁(Pessimistic Lock):正如其名字一样,悲观锁对数据加锁持有一种悲观的态度。因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。

监视是否发生修改watch

如果监视的数据发生修改则放弃操作。


3:RDB和AOF持久化:

3.1:RDB:

RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。

3.1:AOF:

AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。

4:哨兵机制:

在这里插入图片描述

redis服务器一般在大型项目中由集群设立,redis服务器有主从之分,那么问题来了,如果主服务器宕机了,我们怎么办。我们正常思维下会手动把存活的服务器其中一个选为主服务器,但是这样费事费力,redis提供了解决方案。

这里我们可以通过哨兵机制解决:就是通过设立独立的哨兵进程,监测各个服务区的运行情况,当多数哨兵认为主服务器宕机的情况下,通过投票选择新的主服务器

5:缓存穿透,缓存击穿和雪崩:

5.1:缓存穿透:

缓存穿透

我们使用Redis大部分情况都是通过Key查询对应的值,假如发送的请求传进来的key是不存在Redis中的,那么就查不到缓存,查不到缓存就会去数据库查询。假如有大量这样的请求,这些请求像“穿透”了缓存一样直接打在数据库上,这种现象就叫做缓存穿透。

5.2:缓存雪崩:

在这里插入图片描述

其实跟缓存雪崩有点类似,缓存雪崩是大规模的key失效,而缓存击穿是一个热点的Key,有大并发集中对其进行访问,突然间这个Key失效了,导致大并发全部打在数据库上,导致数据库压力剧增。这种现象就叫做缓存击穿。

5.3:缓存击穿:

在这里插入图片描述

当某一个时刻出现大规模的缓存失效的情况,那么就会导致大量的请求直接打在数据库上面,导致数据库压力巨大,如果在高并发的情况下,可能瞬间就会导致数据库宕机。这时候如果运维马上又重启数据库,马上又会有新的流量把数据库打死。这就是缓存雪崩。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

只会写bug的靓仔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值