定义Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库Redis可以通过一些键值类型来存储数据。 键值类型: String字符类型 map散列类型 list列表类型 set集合类型 sortedset有序集合类型
特性
开源
多种数据结构
基于键值的存储服务系统
高性能,功能服务
redis的前世今生
谁在使用redis
github
微博
Stack Overflow
阿里巴巴
百度
美团
搜狐
应用场景
缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用) 分布式集群架构中的session分离。 聊天室的在线好友列表。 任务队列。(秒杀、抢购、12306等等) 应用排行榜。 网站访问统计。 数据过期处理(可以精确到毫秒)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的内部数据结构及常用命令的时间复杂度进行总结。
相关下载 |
原标题:最幸福的编程语言:第一名竟然是它!PHP受尽吐槽~ 来自:Quant最爱 IT界有很好梗,比如: 今天,我们通过Github和来自开发者调查的数据给大家揭秘,哪门详情>>
原标题:TIOBE 12 月编程语言排行榜:争夺年度编程语言,Java、C、Python、C# 即将开战! 年末将至,谁将摘得年度编程语言称号? 整理 | 屠敏 须臾之间,2019 详情>>
11月14日,潘石屹迎来56岁生日,他在微博宣布打算学习新语言——Python。就此,网友炸了:“地产商都来抢饭碗了!”15日,潘石屹再次在微博上详情>>
原标题:TIOBE 2 月编程语言排行榜:Python 逼近 C,Groovy 重回 TOP20 作者 | 唐小引 出品 | CSDN(ID:CSDNnews) 新月伊始,一月一更的 TIOBE 编程语言社区发布了最新详情>>
原标题:PYPL 二月榜单发布:最受欢迎的编程语言、IDE 和数据库都是哪些 PYPL(PopularitY of Programming Language,编程语言流行指数) 二月榜单已发布,目前包含四个详情>>
原标题:TIOBE 2 月编程语言排行榜:Python 逼近 C,Groovy 重回 TOP20 关注我哟 摘要 TIOBE 于近日公 详情>>
游戏类型:行业软件文件大小:5.67MB软件语言:简体中文运营:软件授权:免费版应用平台:WinAll安全认证:aardio编程语言最新官方版下载版本:v16.11 【软件介绍】 快手AAu详情>>
PLC编程是一种数字运算操作的电子系统,专为在工业环境下应用而设计。它采用可编程序的存储器,用来在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,并通过数字式、模拟式的输入和输出,详情>>
今天小编为大家带来的是电脑编程软件合集,感兴趣的用户们不妨来手机56这里看看吧!TOP1:eclipse64位中文版(编程软件类)详情>>
加斯帕罗夫是著名的俄罗斯国际象棋选手,曾23次获得世界排名第一,是位国际象棋大师。而在《编程模拟器》的第34关,我们就要制作一款媲美加斯帕罗夫的国际象棋机器人,下面就随着小编一起看看这一关的金牌该怎么详情>>
在《编程模拟器(Newtechnologiesintoymanufacturing)》中,第25关Industrialespionage需要我们进行双色的筛选,但详情>>
在《编程模拟器(Newtechnologiesintoymanufacturing)》第24关服装店的销售预估中,我们要将三色进行快速排序,此关卡只有所有奖牌的时间详情>>
想要在游戏中学习编程吗?亦或是自己有一身编程技术,想要在一些独特的策略游戏中一展身手?游迅网精选好玩烧脑的编程策略手游,自己定制机器人、设备AI,让手中的每一个终端根据设置的指令进行对战!刺激畅快,头详情>>
导 读 在《杀戮尖塔》中,重编程和《三国杀》诸葛...很好用的滤牌辅助卡,有效清除基础牌,状态牌,以及诅咒...可以不断通过尝试改变世界线,在sl中找到一条通关的... 详情>>
原标题:《杀戮尖塔》机器人重编程详细介绍重编程怎么样在《杀戮尖塔》中,重编程和《三国杀》诸葛亮的技能观星一样,都可以检索抽牌堆的牌,然后排序。不过这张牌是为了下回详情>>
我的世界编程一小时网页游戏详情>>
DOM是DocumentObjectModel的缩写,中文名称是文档对象模型。DOM是处理HTML页面的标准编程接口,DOM可被JavaScript用来读取、改变HTML的内容和结构。前端三大件指H详情>>
近日,国内青少儿编程开创者傲梦推出了“傲梦四周年,荐面礼上礼”活动。活动自推出以来,就引发了众多傲梦家长参与,获得了无数家长点赞好评。原定于7月底结束的“荐”面礼活动,应广大家长强烈要求,将延期至9详情>>
全栈工程师是掌握多种技能的程序员,一般我们把前后台工程师结合起来就是我们所谓的全栈工程师,全栈工程师可以一个人完成一个网站的完整开发过程。目前全栈工程师后台编程语言最多是PHP开发,PHP是专注we详情>>
叶柖对于《70亿人》的评测70亿人是个编程解谜游戏,在游戏中你会用到各种编程语句块去解决问题。游戏界面看详情>>
【流水】论如何用编程语言迫害凌渡详情>>
如今国内实用的计算机编程语言有很多,但是应用最广,学习及使用人数最多的就是JavaEE编程语言,如今参加JavaEE培训的人也在不断的增加。本篇文章扣丁学堂小编就和读者们一块来看一下计算机编程语言有详情>>
圆栗子发自凹非寺苹果的Swift和安卓开发者喜欢的Kotlin,是近年来增长最快的两种编程语言。据分析公司RedMonk统计,2014年诞生的Swift,跻身热度榜单Top15,是所有语言中详情>>
美国当地时间8月10日,RedMonk宣布推出2018年6月(Q3季度)RedMonk编程语言排名,下面让我们看看这份姗姗来迟的编程语言报告带来了哪些消息。开始之前,我们先来了解一下关详情>>
对于熟悉程序员的人来说,编程语言非常之多,那么学习哪个编程语言好呢?很多人都是根据兴趣去选择的,比如说自己对大数据感兴趣,那么会更多的选择Python,如果对软件开发感兴趣更多的选择Java等等。而详情>>
IEEESpectrum发布了第五年的编程语言年度排行榜。为对排行榜中的编程语言进行排名,作者所在团队所使用的评价方法综合了来自多个来源的指标。由于认识到不同的程序员有不同的需求和兴趣领域,我们并详情>>
陈彧卓在成都市青羊区实验中学附属小学读四年级,喜欢读《哈利波特》的他学习编程猫已经两年了。至于为什么学习编程猫,他这样告诉记者,“很早以前,我学详情>>
考虑以下代码:a=1a=a+1print(a)你写代码时候是不是也疑惑过,为什么代码中会有a=a+1,这个怎么解释?这就不是详情>>
开发者盛宴来袭!7月28日51CTO首届开发者大赛决赛带来技术创新分享您应该使用像map、filter和reduce这样的函数,而不是编写for或while循环。这是个推荐做法,因为:循环使产生代码详情>>
前言在一个高并发系统中对流量的把控是非常重要的,当巨大的流量直接请求到我们的服务器上没多久就可能造成接口不可用,不处理的话甚至会造成整个应用不可用。比如最近就有个这样的需求,我作为客户端要向kafk详情>>
小编为您搜罗的答案: 明白这一点能够让圈外人了解软件公司的运作,尤其是在它们变得如此强大又赚钱,制造的产品和服务进入我们生活各个角落的今天。如果你想知道为什么Facebook的外观和工作方式是现详情>>
这个问题很简单,但回答起来可一点也不简单。不妨先说说为什么人们想知道答案。通常问哪种语言最流行,是因为想学习有职业前景的编程语言,即便是已经拥有娴熟技能的程序员。1什么决定流行指数?那么,哪种语言最详情>>
小编为您搜罗的答案:pc上没有用java做游戏的,实际上java因为效率问题也不适合用在pc(或者更准确点叫windows主机)上开发桌面软件(当然包括游戏在内),一般的单机游戏是以vc++为主,你需详情>>
小编为您搜罗的答案:这个你可以在淘宝上看看,很便宜的,很多的网友都在玩王f牌a对决啦,它是完全免费的游戏,里面有很多的明星乱斗,每个英雄都拥有自己的角色定位。如果你喜欢使用近战型肉盾英雄,那么你可以将详情>>
小编为您搜罗的答案:unity3d无论在那个平台它的制作流程、方法都是一样的,只是用的素材有所不同,这个课程我现在正在学习,非常不错。值得一看。详情>>
网易日前宣布获得美国CodeCombat在中国区公立学校市场和在线个人用户市场的独家代理权,并以《极客战记》的中文... 详情>>
极客战记可以学编程吗极客战记怎么玩时间:2018/3/2216:14:46来源:www.pc6.com作者:佚名我要评论(0)详情>>
极客战记v1.0游戏类型:即将发布游戏语言:简体中文编程烧脑益智逻辑思维趣味大小:25.30MB更新:2018-03-22极客战记能不能学编程?这个游戏是网易推出的一详情>>