linux企业实战 --Redis定义

1. Rdeis是什么

Redis是完全开源免费的,遵守BSD协议,是一个高性能的key - value数据库Redis与其他key - value缓存产品有以下三个特点:
Redis支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key - value类型的数据,同时还提供list, set, zset, hash等数据结构的存储Redis支持数据的备份,即master - slave模式的数据备份

2. 为什么要使用Redis

在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千.上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题

我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应redis的速度:单机读可达10000次/s写可达5000/s
mysql经过了这么多年优化才1000次/S,500次/S

3. redis优势?

redis是操作内存,操作速度自然比mysql的磁盘操作要快太多了
redis单线程+多路I/O复用模型

3.1 单线程

单线程的模式解决了数据存储的顽疾:数据并发安全,任何运行多线程同时访问数据库都会存在这个问题,所以才有了mysql的mvcc和锁,Memcached 的cas乐观锁,来保证数据不会出现并发导致的数据问题,但是redis使用单线程就不存在这个问题: 1,单线程足够简单,无论在redis的实现还是作为调用方,都不需要为数据并发提心吊胆,不需要加锁。2.不会出现不必要的线程调度, 你知道多线程,频繁切换上下文,也会带来很多性能消耗

什么是切换上下文?
线程每次执行需要把数据从主内存读到工作内存,然而当线程被调度到阻塞的时候,这些工作内存的数据需要被快照到线程.上下文中,其实就是一个记录各个线程状态的存储结构,等到线程被唤醒的时候,再从上下文中读取,称之为上下文切换;减少上下文切换操作,也是使用单线程的奥妙

3.2. 多路1/O复用模型

这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程
我们使用单线程的方式是无法发挥多核CPU性能,不过我们可以通过在单机开多个Redis实例来完善

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值