关闭

Redis 它是什么?它用来做什么?它的优势与短板如何?

10351人阅读 评论(3) 收藏 举报
分类:

问题导读:
1.Redis 是什么?
2 Redis用来做什么?
3 Redis的优点?
4 Redis的缺点?


阅读目的: 对什么是内存型数据库有概念性的认知。?



Redis 是什么?

    通常而言目前的数据库分类有几种,包括 SQL/NSQL,,关系数据库,键值数据库等等 等,分类的标准也不以,Redis本质上也是一种键值数据库的,但它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。从而使它的位置处于关系数据库和键值数 据库之间。Redis不仅能保存Strings类型的数据,还能保存Lists类型(有序)和Sets类型(无序)的数据,而且还能完成排序(SORT) 等高级功能,在实现INCR,SETNX等功能的时候,保证了其操作的原子性,除此以外,还支持主从复制等功能。

  更为详细的描述请参考如下:

        http://code.google.com/p/redis/wiki/index

  Redis官方也同样提供了一个名为Retwis的项目代码,可以对照着官方学习。

2 Redis用来做什么?

        通常局限点来说,Redis也以消息队列的形式存在,作为内嵌的List存在,满足实时的高并发需求。而通常在一个电商类型的数据处理过程之中,有关商品,热销,推荐排序的队列,通常存放在Redis之中,期间也包扩Storm对于Redis列表的读取和更新。


3 Redis的优点

性能极高 – Redis能支持超过 100K+ 每秒的读写频率。

丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。

丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

4 Redis的缺点

是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。

    总结: Redis受限于特定的场景,专注于特定的领域之下,速度相当之快,目前还未找到能替代使用产品。



在使用缓存的时候,redis比memcached具有更多的优势,并且支持更多的数据类型。


Redis是什么?两句话可以做下概括: 
1. 是一个完全开源免费的key-value内存数据库 
2. 通常被认为是一个数据结构服务器,主要是因为其有着丰富的数据结构 strings、map、 list、sets、 sorted sets

Redis不是什么?同样从两个方面来做下对比: 
1. 不是sql server、mySQL等关系型数据库,主要原因是: 
     . redis目前还只能作为小数据量存储(全部数据能够加载在内存中) ,海量数据存储方面并不是redis所擅长的领域 
     . 设计、实现方法很不一样.关系型数据库通过表来存储数据,通过SQL来查询数据。而Redis通上述五种数据结构来存储数据,通过命令 来查询数据 
2.   不是Memcached等缓存系统,主要原因有以下几个: 
     .网络IO模型方面:Memcached是多线程,分为监听线程、worker线程,引入锁,带来了性能损耗。Redis使用单线程的IO复用模型,将速度优势发挥到最大,也提供了较简单的计算功能 
     .内存管理方面:Memcached使用预分配的内存池的方式,带来一定程度的空间浪费 并且在内存仍然有很大空间时,新的数据也可能会被剔除,而Redis使用现场申请内存的方式来存储数据,不会剔除任何非临时数据 Redis更适合作为存储而不是cache 
     .数据的一致性方面:Memcached提供了cas命令来保证.而Redis提供了事务的功能,可以保证一串 命令的原子性,中间不会被任何操作打断 
     . 存储方式方面:Memcached只支持简单的key-value存储,不支持枚举,不支持持久化和复制等功能
   一句话小结一下:Redis是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。

Redis有什么用?只有了解了它有哪些特性,我们在用的时候才能扬长避短,为我们所用: 
1. 速度快:使用标准C写,所有数据都在内存中完成,读写速度分别达到10万/20万 
2. 持久化:对数据的更新采用Copy-on-write技术,可以异步地保存到磁盘上,主要有两种策略,一是根据时间,更新次数的快照(save 300 10 )二是基于语句追加方式(Append-only file,aof) 
3. 自动操作:对不同数据类型的操作都是自动的,很安全 
4. 快速的主--从复制,官方提供了一个数据,Slave在21秒即完成了对Amazon网站10G key set的复制。 
5. Sharding技术: 很容易将数据分布到多个Redis实例中,数据库的扩展是个永恒的话题,在关系型数据库中,主要是以添加硬件、以分区为主要技术形式的纵向扩展解决了很多的应用场景,但随着web2.0、移动互联网、云计算等应用的兴起,这种扩展模式已经不太适合了,所以近年来,像采用主从配置、数据库复制形式的,Sharding这种技术把负载分布到多个特理节点上去的横向扩展方式用处越来越多。

这里对Redis数据库做下小结: 
1. 提高了DB的可扩展性,只需要将新加的数据放到新加的服务器上就可以了 
2. 提高了DB的可用性,只影响到需要访问的shard服务器上的数据的用户 
3. 提高了DB的可维护性,对系统的升级和配置可以按shard一个个来搞,对服务产生的影响较小 
4. 小的数据库存的查询压力小,查询更快,性能更好

   写到这里,可能就会有人急不可待地想用它了,那怎么用呢?可以直接到官方文档,里面帮我们整理好了各个语言环境下的客户端,主要有Ruby、Python、 PHP、Perl、Lua、Java、C#....有几种语言,我也没见过,所以就不多说了,你懂的....

最后,把我使用过程中的一些 经验与教训,做个小结: 
1. 要进行Master-slave配置,出现服务故障时可以支持切换。 
2. 在master侧禁用数据持久化,只需在slave上配置数据持久化。 
3. 物理内存+虚拟内存不足,这个时候dump一直死着,时间久了机器挂掉。这个情况就是灾难! 
4. 当Redis物理内存使用超过内存总容量的3/5时就会开始比较危险了,就开始做swap,内存碎片大 
5. 当达到最大内存时,会清空带有过期时间的key,即使key未到过期时间. 
6. redis与DB同步写的问题,先写DB,后写redis,因为写内存基本上没有问题



2
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

什么是redis,redis能做什么,redis的应用场景

1. 什么是Redis Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dicti...
  • u011991249
  • u011991249
  • 2016-11-16 16:38
  • 13183

Redis能干啥?细看11种Web应用场景

下面列出11种Web应用场景,在这些场景下可以充分的利用Redis的特性,大大提高效率。 1.在主页中显示最新的项目列表。 Redis使用的是常驻内存的缓存,速度非常快。LPUSH用来插入一个内容...
  • u014386474
  • u014386474
  • 2016-07-06 13:40
  • 12647

Redis 它是什么?它用来做什么?它的优势与短板如何?

Redis 是什么?     通常而言目前的数据库分类有几种,包括 SQL/NSQL,,关系数据库,键值数据库等等 等,分类的标准也不以,Redis本质上也是一种键值数据库的,但它在保持键值数据...
  • qq_35160479
  • qq_35160479
  • 2016-06-13 20:55
  • 109

人工智能进十九大报告!我国AI的4大优势+唯一短板大盘点

来源:新智元 作者:常佩琦  弗格森 本文长度为1100字,建议阅读4分钟 本文将分析当下中国人工智能发展的优势和劣势。 昨天,中国共产党第十九次全国代表大会开幕。我...
  • eNohtZvQiJxo00aTz3y8
  • eNohtZvQiJxo00aTz3y8
  • 2017-10-19 00:00
  • 331

技术的本质:技术是什么,它是如何进化的 PDF电子书下载 带书签目录 pdf

  • 2017-01-13 08:51
  • 48B
  • 下载

技术的本质:技术是什么,它是如何进化的-布莱恩•阿瑟.pdf

  • 2017-07-25 14:59
  • 3.08MB
  • 下载

servlet的是什么,它是如何工作的?

Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet...
  • yilaguandemei
  • yilaguandemei
  • 2018-01-12 20:36
  • 2

知乎:对你职业生涯帮助最大的习惯是什么?它是如何帮助你的?

对我职业生涯帮助比较大的一个习惯可能是“勤于整理资料”。每天不管工作多忙,都会留出一些时间搜集资料、分类整理,既包括最新的法律条文,也包括媒体报道的案例,主管官员讲话,公布的判决书、招股书,法官律师专...
  • zcy691640
  • zcy691640
  • 2014-12-08 12:10
  • 477

校验程序(其实我没搞清楚它是什么意思)(自编)

/* 客户端通过键盘录入用户名 服务端对这个用户名进行校验 如果该用户存在,在服务端显示xxx,一登陆 并在客户端显示xxx,登录成功 如果该用户存在,在服务端显示xxx,尝试登录 并在客...
  • troylee1986
  • troylee1986
  • 2011-09-12 18:05
  • 329

Zookeeper学习(一)—— 它是什么??

一、什么是Zookeeper ZooKeeper 顾名思义 动物园管理员,他是拿来管大象(Hadoop) 、 蜜蜂(Hive) 、小猪(Pig)  的管理员, Apache Hbase和 A...
  • u013144121
  • u013144121
  • 2015-01-28 15:14
  • 459
    个人资料
    • 访问:36017次
    • 积分:645
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:38篇
    • 译文:0篇
    • 评论:22条
    文章分类
    最新评论