主页»数据库»为什么要用Redis

为什么要用Redis

来历:大愚Talk 发布时刻:2018-07-26 阅览次数:

  最近阅览了《Redis开发与运维》,十分不错。这儿对书中的常识收拾一下,便利自己回忆一下Redis的整个体系,来对相关常识点查漏补缺。

  我依照五点把书中的内容进行一下收拾:

•    为什么要挑选Redis:介绍Redis的运用场景与运用Redis的原因;
•    Redis常用指令总结:包含时刻复杂度总结与详细数据类型在Redis内部运用的数据结构;
•    Redis的高档功用:包含耐久化、仿制、岗兵、集群介绍;
•    了解Redis:了解内存、堵塞;这部分是十分重要的,前面介绍的都能够成为术,这儿应该归于道的部分。;
•    开发技巧:首要是一些开发实战的总结,包含缓存规划与常见坑点。

  先来敞开榜首部分的内容,对Redis来一次从头审察。

本系列内容根据:redis-3.2.12

 Redis不是万金油

  在面试的时分,常被问比较下Redis与Memcache的优缺点,个人觉得这二者并不适宜一同比较,一个对错联系型数据库不只能够做缓存还精干其它工作,一个是仅用做缓存。常常让咱们对这二者进行比较,首要也是由于Redis最广泛的运用场景便是Cache。那么Redis究竟精干什么?又不精干什么呢?

  Redis都能够干什么事儿

  缓存,毫无疑问这是Redis当今最为人熟知的运用场景。再进步服务器功用方面十分有用;

  排行榜,假如运用传统的联系型数据库来做这个事儿,十分的费事,而运用Redis的SortSet数据结构能够十分便利搞定;

  核算器/限速器,运用Redis中原子性的自增操作,咱们能够计算相似用户点赞数、用户拜访数等,这类操作假如用MySQL,频频的读写会带来相当大的压力;限速器比较典型的运用场景是约束某个用户拜访某个API的频率,常用的有抢购时,防止用户张狂点击带来不必要的压力;

  老友联系,运用调集的一些指令,比方求交集、并集、差集等。能够便利搞定一些一同老友、一同爱好之类的功用;

  简略音讯行列,除了Redis本身的发布/订阅形式,咱们也能够运用List来完结一个行列机制,比方:到货告诉、邮件发送之类的需求,不需求高牢靠,可是会带来十分大的DB压力,彻底能够用List来完结异步解耦;

  Session同享,以PHP为例,默许Session是保存在服务器的文件中,假如是集群服务,同一个用户过来或许落在不同机器上,这就会导致用户频频登陆;选用Redis保存Session后,不管用户落在那台机器上都能够获取到对应的Session信息。

  Redis不精干什么事儿

  Redis感觉精干的工作特别多,但它不是全能的,适宜的当地用它事半功倍。假如乱用或许导致体系的不稳定、本钱增高级问题。

  比方,用Redis去保存用户的基本信息,尽管它能够支撑耐久化,可是它的耐久化计划并不能确保数据肯定的落地,而且还或许带来Redis功用下降,由于耐久化过分频频会增大Redis服务的压力。

  简略总结便是数据量太大、数据拜访频率十分低的业务都不适宜运用Redis,数据太大会添加本钱,拜访频率太低,保存在内存中纯属浪费资源。

 挑选总需求找个理由

  上面说了Redis的一些运用场景,那么这些场景的处理计划也有许多其它挑选,比方缓存能够用Memcache,Session同享还能用MySql来完结,音讯行列能够用RabbitMQ,咱们为什么必定要用Redis呢?

  速度快,彻底根据内存,运用C言语完结,网络层运用epoll处理高并发问题,单线程模型防止了不必要的上下文切换及竞赛条件;
留意:单线程仅仅是说在网络恳求这一模块上用一个恳求处理客户端的恳求,像耐久化它就会重开一个线程/进程去进行处理

  丰厚的数据类型,Redis有8种数据类型,当然常用的首要是 String、Hash、List、Set、 SortSet 这5种类型,他们都是根据键值的办法安排数据。每一种数据类型供给了十分丰厚的操作指令,能够满意绝大部分需求,假如有特别需求还能自己经过 lua 脚本自己创立新的指令(具有原子性);

  除了供给的丰厚的数据类型,Redis还供给了像慢查询剖析、功用测验、Pipeline、业务、Lua自定义指令、Bitmaps、HyperLogLog、发布/订阅、Geo等个性化功用。

  Redis的代码开源在GitHub,代码十分简略高雅,任何人都能够吃透它的源码;它的编译装置也是十分的简略,没有任何的体系依靠;有十分活泼的社区,各种客户端的言语支撑也是十分完善。别的它还支撑业务(没用过)、耐久化、主从仿制让高可用、分布式成为或许。

  做为一个开发者,关于咱们运用的东西不能让它成为一个黑盒子,咱们应该深化进去,对它更了解、更了解。今日简略说了下Redis的运用场景,以及为什么挑选了Redis而不是其它。下次对Redis的内部数据结构及常用指令的时刻复杂度进行总结。

QQ群:凯发娱乐官网官方群(515171538),验证音讯:10000
微信群:加小编微信 849023636 邀请您参加,验证音讯:10000
提示:更多精彩内容重视微信大众号:全栈开发者中心(fsder-com)
网友谈论(共0条谈论) 正在载入谈论......
沉着谈论文明上网,回绝歹意咒骂 宣布谈论 / 共0条谈论
登录会员中心