Redis学习总结

一.什么是Redis?

redis是一种支持Key-Value等多种数据结构的高性能存储系统,和Memcached类似,可用于缓存,事件发布或订阅,高速队列等场景。该数据库使用(ANSI)C语言编写,支持网络,提供string(字符串),hash(哈希),list(列表),set(集合)及sortset(有序集合)等5种数据结构直接存取,基于内存,可持久化.

二.Redis的5种数据类型

redis是基于Map<Key,Value>形式存储。Value有以下几个数据类型
①String 字符串(可以为整形、浮点型和字符串,统称为元素)
String是最常用的一种数据类型,普通的key/value存储都可以归为此类,使用广泛
②list 列表(实现队列,元素不唯一,先入先出原则)
最新消息排序,优先队列等等
③set集合(各不相同的元素)
去重,可以用于2个人的共同好友
④hash hash散列值(hash的key必须是唯一的)
用于做类似购物车的事儿。Hash中key为商品,value为数量
⑤sort set有序集合
海量数据排序 scores(值)
补充:
geo(地图坐标)
hyperloglog(统计当前人数)
bitmap(位图)

value值只能是0和1,可用于存储用户在线状态

三.redis高并发和快速的原因?

1.redis是基于内存的,内存的读写速度非常快;
2.redis是单线程的,省去了很多上下文切换线程的时间;
3.redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间。

四.说说缓存击穿、穿透、雪崩

①缓存穿透:指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。
为了防止有人利用这个漏洞恶意攻击我们的数据库,我们可以采取如下措施:
如果从数据库查询的对象为空,也放入缓存,key为用户提交过来的主键值,value为null,只是设定的 缓存过期时间较短,比如设置为60秒。这样下次用户再根据这个key查询redis缓存就可以查询到值了 (当然值为null),从而保护我们的数据库免遭攻击。
②缓存击穿:是指一个key非常热点(例如双十一期间进行抢购的商品数据),在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求到数据库上,就像在一个屏障上凿开了一个洞。
我们可以将这些热点数据设置永不过期就可以解决缓存击穿的问题了。
③缓存雪崩:是指在某一个时间段,缓存集中过期失效。在缓存集中失效的这个时间段对数据的访问查询,都落到了数据库上,对于数据库而言,就会产生周期性的压力波峰。
为了避免缓存雪崩的发生,我们可以将缓存的数据设置不同的失效时间,这样就可以避免缓存数据在某 个时间段集中失效。例如对于热门的数据(访问频率高的数据)可以缓存的时间长一些,对于冷门的数据可以缓存的时间段一些。甚至对于一些特别热门的数据可以设置永不过期。

五.redis缓存的持久化机制

Redis 的持久化有两种方式,或者说有两种策略:
RDB(Redis Database):指定的时间间隔能对你的数据进行快照存储。
AOF(Append Only File):每一个收到的写命令都通过write函数追加到文件中。
AOF文件比RDB更新频率高,优先使用AOF还原数据。
AOF比RDB更安全也更大
RDB性能比AOF好
如果两个都配了优先加载AOF

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值