redis学习总结

首先redis数据库是NoSql数据库,也就是非关系型数据库,非关系型数据库有很多,今天主要介绍redis

非关系型数据库,存储形式为key-value形式,数据会保存在内存中,(也算是确定之一)。所以我们需要提供额外的服务器给他。
优点
1: 以key-value形式存储,取值时我们只需要知道key就可以取出数据。因此它的读写性能优异。
2: 支持的数据结构丰富,有list,set,string,hsah等数据结构
3: 支持数据持久化,支持AOF和RDB两种持久化方式(AOF和RDB会在稍后更新的文章中详细介绍)
简单介绍一下AOF和RDB
RDB是一种快照的方式来存储的,这也是redis的默认的持久化方式,每隔一段对数据进行一次存储,默认是15S,这个也可以通过配置文件里修改,这种存储方式性能比较高
AOF是即时性的持久化方式,只要数据发生改变都会保存到硬盘一份,这种方式对数据的保存完整性比较高,但是性能比较差。而RDB存在的问题主要是服务器宕机或者断电,会造成数据丢失

主要用途举例:
项目中主要用来存储热点数据,减轻数据库的压力(如首页热点数据的展示等)

关于redis的缓存穿透和缓存雪崩
缓存穿透就是,因为 redis都是按照key去缓存查询,如果不存在对应的value,就应该去数据库查找。如果key对应的value是一定不存在的,并且对该key并发请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力,这就叫“缓存雪崩”。解决办法是,对查询结果为空的情况也进行缓存,并且给缓存设置不同的有效期。当然redis容灾的最有效的方法还是搭建集群。在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。不同的key,设置不同的过期时间,让缓存失效的时间点尽量均匀。

redis集群
Redis本身就支持集群操作redis_cluster,另外redis还支持主从复制,以前的老版本中有一个哨兵模式,在主服务器宕机时,从服务器可以自动转换为主服务器。搭建redis集群可用ruby脚本配合搭建,我们可以搭建了6台服务器,3主3备,他们之间通信的原理是有一个乒乓协议进行通信的,他们判断一个节点的状态是用投票选举机制判断的,半数以上判断一个接口是宕机了的话,备用节点就会启动,对,再说下一他们往里存储数据的机制吧,其实这个redis搭建好集群以后每个节点都存放着一个hash槽,每次往里存储数据的时候,redis都会根据存储进来的key值算出一个hash值,通过这个hash值可以判断到底应该存储到哪一个哈希槽中,取的时候也是这么取的,这就是我了解的redis集群.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值