redis缓存

用缓存,主要是俩用途,高性能和高并发

  • 假设这么个场景,你有个操作,一个请求过来操作mysql,半天查出来一个结果,耗时600ms。
    缓存啊,折腾600ms查出来的结果,扔缓存里,一个key对应一个value,下次再有人查,别走mysql折腾600ms了。直接从缓存里,通过一个key查出来一个value,2ms搞定。性能提升300倍。
    这就是所谓的高性能。

  • 高并发
    所以要是你有个系统,高峰期一秒钟过来的请求有1万,那一个mysql单机绝对会死掉。你这个时候就只能上缓存,把很多数据放缓存,别放mysql。缓存功能简单,说白了就是key-value式操作,单机支撑的并发量轻松一秒几万十几万,支撑高并发so
    easy。单机承载并发量是mysql单机的几十倍
    在项目里用缓存支持高性能,有些复杂的查询,复杂的查询很耗时,所以把结果放在缓存,用到就可以直接在缓存里查,增强用户体验。

  • 常见的缓存问题:
    1)缓存与数据库双写不一致 2)缓存雪崩 3)缓存穿透 4)缓存并发竞争
    redis都有哪些数据类型?

  • (1)string
    这是最基本的类型了,没啥可说的,就是普通的set和get,做简单的kv缓存

  • (2)hash

    这个是类似map的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存在redis里,然后每次读写缓存的时候,可以就操作hash里的某个字段。

  • (3)list
    有序列表

  • (4)set
    无序集合,自动去重

  • (5)sorted set
    排序的set,去重但是可以排序

  • redis的过期策略都有哪些?内存淘汰机制都有哪些?

  • (1)设置过期时间
    定期删除+惰性删除

  • (2)内存淘汰
    allkeys-lru 当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key
    volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key
    volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key

  • 如果redis要支撑超过10万+的并发,那应该怎么做?
    主从架构 -> 读写分离

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值