ITPUB论坛-中国最专业的IT技术社区

 手机号登录  找回密码
 注册
楼主: 拉拉乙

【大话IT】Redis到底是四不像还是性能神器?

[复制链接]
认证徽章
论坛徽章:
0
发表于 2017-12-22 14:43 | 显示全部楼层
本帖最后由 aloki 于 2017-12-22 21:17 编辑

1. 你使用Redis的理由是什么?使用redis有哪些好处?
使用Redis的理由是:Redis不仅可以让代码变得更简短、更易懂、更易维护,而且还可以使代码的运行速度更快。除此之外,在其他许多情况下,Redis的效率和易用性也比关系数据库要好得多。

使用Redis的好处是:
1)速度快:因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
2)支持丰富数据类型:Redis不仅仅支持简单的k/v类型的数据,同时还提供string,list,set,sorted set,hash等数据结构的存储。
3)支持master-slave(主—从)模式应用。
4)支持数据的持久化:可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
5)丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

2. Redis的应用场景有哪些?(比如网站访问统计、数据过期处理等)
Redis最适合所有数据in-momory的场景:
1)会话缓存(Session Cache)
2)全页缓存(FPC)
3)使用redis作为PostgreSQL/MySQL的二级缓存, 提升数据库的性能,减轻mysql之类的关系数据库读写的压力。
4)排行榜/计数器:用来计算记录的COUNT数,数据插入或删除的时候,记录自增或自减。
5)用来对数据统计标签,例如数据入库时,按照数据的用户ID以及记录的行为习惯进行标签化,将标签信息直接存入REDIS,作为一个实时标签系统。

3.“Redis有点像个拥有十八般武艺的四不像,想要解决所有问题,却没有完全好地解决掉任何一个问题。”你同意这个说法吗?为什么?
不同意。因为正是由于先有应用于众多应用场景的其他数据库没能很好解决的问题出现,Redis才会出现,它是为了解决上述问题而开发出来的。Redis具有为解决问题而生的独一无二的数据模型。它提供了5种不同类型的数据结构,各式各样的问题都可以很自然地映射到这些数据结构上:Redis的数据结构致力于帮助用户解决问题,而不会像其他数据库那样,要求用户扭曲问题来适应数据库。至于为什么Redis没能完全解决掉任何一个问题,正如人不是天生就会走路一样,总有一个循序渐进的过程,不能一蹴而就。更何况,如果Redis真的一个问题也没解决掉的话,Redis为什么还有这么多人在用,还这么受欢迎呢?

使用道具 举报

回复
论坛徽章:
9
目光如炬
日期:2017-10-30 17:00:03火眼金睛
日期:2017-11-01 17:00:02目光如炬
日期:2017-11-05 22:00:01目光如炬
日期:2017-11-19 22:00:00火眼金睛
日期:2017-11-30 22:00:00目光如炬
日期:2017-12-10 22:00:00目光如炬
日期:2017-12-17 22:00:00目光如炬
日期:2017-12-24 22:00:01火眼金睛
日期:2018-01-31 22:00:01
 楼主| 发表于 2017-12-22 15:02 | 显示全部楼层
aloki 发表于 2017-12-22 14:43
1. 你使用Redis的理由是什么?使用redis有哪些好处?
使用Redis的理由是:Redis不仅可以让代码变得更简短 ...

使用道具 举报

回复
认证徽章
论坛徽章:
167
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB社区12周年站庆徽章
日期:2013-08-13 16:52:38itpub13周年纪念徽章
日期:2014-10-08 15:21:35ITPUB14周年纪念章
日期:2015-10-26 17:23:44ITPUB15周年纪念
日期:2018-02-09 14:12:58状元
日期:2015-11-19 12:58:23榜眼
日期:2015-11-19 12:58:23探花
日期:2015-11-19 12:58:23进士
日期:2015-11-19 12:59:09
发表于 2017-12-22 15:28 | 显示全部楼层
互联网创业公司几乎都选择了Redis。

一句顶一万句!

使用道具 举报

回复
认证徽章
论坛徽章:
335
秀才
日期:2015-08-27 09:55:502014系统架构师大会纪念章
日期:2015-07-31 17:48:202013系统架构师大会纪念章
日期:2015-07-31 17:48:202012系统架构师大会纪念章
日期:2015-07-31 17:48:202011系统架构师大会纪念章
日期:2015-07-31 17:48:202010系统架构师大会纪念
日期:2015-07-31 17:48:202009架构师大会纪念徽章
日期:2015-07-31 17:48:20秀才
日期:2015-07-29 15:08:59榜眼
日期:2015-07-15 16:04:23秀才
日期:2015-07-15 12:49:25
发表于 2017-12-22 16:46 | 显示全部楼层
1.你使用Redis的理由是什么?使用redis有哪些好处?
Redis是开源的,使用ANSI C语言编写,用户可以较容易地进行一些个性化定制。其次,Redis提供多种语言的API,提供了Python、Ruby、Erlang、PHP客户端,可以较好地满足不同的开发场景。
它是一个高性能的key-value存储系统,数据都是缓存在内存中,周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现主从同步。非常适合不涉及过多数据关系的业务数据,能有效减少读写磁盘的次数,比SQL数据库存储拥有更好的读写性能。

2.Redis的应用场景有哪些?
处理Web规模的大型数据集应用。假如需要在Web应用中列出用户贴出的最新20条评论,就可以把新发表的评论的ID添加到一个Redis列表中:
LPUSH latest.comments <ID>
将列表裁剪为指定长度,Redis保存最新的5000条评论:
LTRIM latest.comments 0 5000
每次需要获取最新评论的项目范围时,调用一个函数来完成:
FUNCTION get_latest_comments(start,num_items):
   id_list = redis.lrange("latest.comments",start,start+num_items-1)
   IF id_list.length < num_items
       id_list = SQL_DB("SELECT ... ORDER BY time LIMIT ...")
   END
   RETURN id_list
END
由于上面的最新ID常驻在缓存当中并且一直更新,获取ID的函数会一直询问Redis。在这个过程中并不需要访问数据库,只有在start/count参数超出了这个范围的时候,才需要去访问数据库。
应用系统不需要像传统方式那样“刷新”缓存,Redis实例中的信息永远是一致的。只是在用户需要获取“很远”的数据时才会去访问硬盘上的数据库。

3.“Redis有点像个拥有十八般武艺的四不像, 想要解决所有问题, 却没有完全好地解决掉任何一个问题。”你同意这个说法吗?为什么?
不同意,这可能是使用者对Redis的要求太高了。现在的大型应用系统完全可以使用关系型数据库+ Key-value数据库一起使用,取两者的长处,优势互补。在一些需要大容量数据集的应用中,Redis并不适合,因为它的数据集不会超过系统可用的内存。然而关系型数据库处理起来感到缓慢的任务,却可以通过Redis来优化,或者为应用创建些新的功能。

使用道具 举报

回复
论坛徽章:
23
娜美
日期:2016-06-22 19:49:29懒羊羊
日期:2015-03-17 13:44:33懒羊羊
日期:2015-04-01 08:19:10天枰座
日期:2015-07-17 09:51:12沸羊羊
日期:2015-06-17 14:51:07金牛座
日期:2016-03-21 21:10:40奥运会纪念徽章:篮球
日期:2016-09-02 09:45:25摩羯座
日期:2016-03-29 15:07:30布鲁克
日期:2017-03-21 09:35:18山治
日期:2018-01-04 21:26:16
发表于 2017-12-22 17:49 | 显示全部楼层
本帖最后由 IT渔夫 于 2017-12-22 17:52 编辑

之前尝试将Redis应用到工业实时数据的存储。从DCS、PLC采集过来的设备实时数据(比如锅炉温度、压力之类的),刷新频率可以达到毫秒级。之前一直使用的是工业级的实时数据库(按点个数收费的),自己有尝试用Redis来,主要是用到ZSET类型数据,在我本机虚拟机上做测试,每次存储频率可以达到1毫秒,数据的持久化也没问题。单条数据大概在100个字节,保存1亿条记录在内存,需要的内存在12G左右。redis支持主备,群集,除开数据压缩存储外,都不比专业的工业时序数据库差。

至于互联网行业的应用,就非常普遍了。

使用道具 举报

回复
论坛徽章:
0
发表于 2017-12-22 18:01 | 显示全部楼层
1.你使用Redis的理由是什么?使用redis有哪些好处
摘述下ITPUB公众号一篇推文描述的REDIS特点
-所有数据存储在内存中,高速读写
-提供丰富多样的数据类型:string、 hash、 set、 sorted set、bitmap、hyperloglog
-提供了 AOF 和 RDB 两种数据的持久化保存方式,保证了 Redis 重启后数据不丢失
-Redis 的所有操作都是原子性的,还支持对几个操作合并后的原子性操作,支持事务

个人觉得比较好的也是支持的客户端操作语言非常多,能覆盖的场景就很多

2.Redis的应用场景有哪些
比较常见像有会话缓存,然后作为队列使用的操作,支持 list 和 set 这类操作;像最新消息、排行榜这类很常用的功能都能轻松覆盖
比较少的像订阅发布这种,可以作为脚本触发器。

3.“Redis有点像个拥有十八般武艺的四不像, 想要解决所有问题, 却没有完全好地解决掉任何一个问题。”你同意这个说法吗?为什么?
不太认同,主观上来说没什么东西会定位成是解决所有问题的,redis一定程度上补偿了memcached这类key/value存储不足的问题,但也有他的局限性


使用道具 举报

回复
论坛徽章:
0
发表于 2017-12-24 21:28 | 显示全部楼层
Redis在数据量比较大的情况下会出现超时异常问题,看git好像很多人碰到 找不到解决办法?

使用道具 举报

回复
论坛徽章:
0
发表于 2017-12-25 08:52 | 显示全部楼层
受用了很棒啊谢谢大神

README.zip

538 Bytes, 下载次数: 3

使用道具 举报

回复
认证徽章
论坛徽章:
39
2014年新春福章
日期:2014-02-18 16:42:02美羊羊
日期:2015-03-18 09:30:06喜羊羊
日期:2015-03-18 09:30:06暖羊羊
日期:2015-03-18 09:30:06嫦娥
日期:2015-06-16 13:56:02秀才
日期:2015-09-14 10:08:302015年中国系统架构师大会纪念徽章
日期:2015-09-14 10:13:48秀才
日期:2015-12-14 14:51:16秀才
日期:2015-12-18 09:28:57秀才
日期:2015-12-25 15:31:10
发表于 2017-12-25 10:23 | 显示全部楼层
本帖最后由 xuexiaogang 于 2017-12-25 10:27 编辑

1.      你使用Redis的理由是什么?使用redis有哪些好处?
答:其实我经历的单位和项目中从理论上来说不必要使用redis这样的内存数据库。量级小并发也没有什么的。只是开发水平不行,加之社会浮躁等原因。盲目跟风、什么流行用什么,什么新用什么。觉得用商业的数据库,甚至说用关系型数据库体现不出自己的本事。一定要用开源的NoSQL。觉得redis是内存了,快。熟不知,oracle、mysql哪个没有内存缓存?
所以我这里选择的理由是盲目跟风以及乱用为主。redis根本不是我们这样用的。能用的好的也就是大的互联网公司,我个人觉得小的互联网公司都没有必要使用。

redis版本更新还是快的。而且从3以后支持集群。这也是它的一大进步。而且从4开始支持了简单的事务,这是其他nosql没有做到的。
redis的好处是,kv存储检索快。不过话说回来了,oracle,mysql 主键查询也不慢。这个也被缓存到sga和innodbbufferpool中,也是内存处理。没有明显查询。
redis还有能持久化的好处。这个是它与memcache不一样的地方。
redis还可以sharding。

2.      Redis的应用场景有哪些?(比如网站访问统计、数据过期处理等)
答:括号内的都是的。当然还有比如用户登录、以及用户状态、以及一切每秒10几万次的kv请求的场景。如果只有几千或者几万,这个其实不用redis。oracle、mysql都可以实现。而即使用redis也绝对不是一个主从这样的去抗十几万几十万。一定是几十个成规模甚至更加大的集群。
听过几个大的公司介绍他们的redis是3000个起,有的到了8000个。
一个两个的redis不能太成气候。
我接触一下开发,上来就要集群环境?问为什么要这样,说是要处理高并发。我就问,我们这里有高并发场景吗?要是有,有多高?答不出来。
即使做好了集群,又不会连接。只会通过框架调用接口。只能连一个。所以这些都是redis使用的误区。当然一旦到了集群以后只要不是坏一半,都可以继续服务。但是问题有一个,就是集群设计之初没想到要全部关机的场景。如果全关机或者一半以上关机。集群就要重建了。所以他适合分布在不同地域的场景。

3.      “Redis有点像个拥有十八般武艺的四不像, 想要解决所有问题, 却没有完全好地解决掉任何一个问题。”你同意这个说法吗?为什么?
答:其实很多数据库在不少场景下可以超越oracle。看不起oracle,但是如果想做全,发现越做到后面也绕不开这些俗套。只能向着oracle靠拢了。即使一个40年的数据库公司现在也没有完全解决所有问题。怎么能指望redis处理所有的问题?
百花齐放的时代,每个数据库担当好自己的一个场景,不同场景用不同数据库就好了。没必要全能解决。甲骨文很多能解决也是因为不同的产品组件放在一个,不是单一数据库就解决了所有场景。还有就是对于开源数据库要投入自己的开发和运维去维护。如果没能力的话,最后伤到的还是自己。无异于自杀。就像武功越杂越容易走火入魔。


使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
6
ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48茶鸡蛋
日期:2013-01-10 11:06:072013年新春福章
日期:2013-02-25 14:51:24法拉利
日期:2014-02-02 10:56:512014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08
发表于 2017-12-26 11:05 | 显示全部楼层
Redis一个缓存工具,可以用来缓存数据作为数据库使用;可以缓存访问数据提高IO访问效率,提高了效率,减少了安全。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表