http://blog.csdn.net/wtyvhreal/article/details/41855327

Redis是一个开源的高性能键值对数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存、队列系统等不同的角色。

1.1历史和发展

2008年,意大利一家创业公司Merzia的创始人Salvatore Sanfilippo为了避免MySQL的低性能,亲自定做一个数据库,并于2009年开发完成,这个就是redis

短短几年,用户数据量猛增。国内如新浪微博、街旁和知乎等,国外如GitHub、暴雪等,都是Redis的用户。

Redis的代码托管在GitHub上,开发十分活跃。

1.2特性

 

1.2.1存储结构

Redis是REmote DIctionary Server(远程字典服务器)的缩写,他以字典结构存储数据,并允许其他应用通过TCP协议读写字典里的内容,Redis字典中的键值除了可以是字符串外,还可以是其他数据类型,比如

字符串类型
     散列类型

列表类型

集合类型

有序集合类型

这种字典形式的存储结构与常见的mysql等关系数据库的二维表形式的存储结构有很大的差异。

(1)支持开发者可以将程序中的数据直接映射到Redis中

(2)对不同数据类型提供了非常方便的操作方式,如使用集合类型存储文章标签,Redis可以对标签进行如交集、并集这样的集合运算操作。

1.2.2内存存储与持久化

Redis数据库中的所有数据都存储在内存中,由于内存的读写速度远快于硬盘,性能明显优势,无时延情况下Redis可以在一秒内读写超过100000个键值。

将数据存储在内存中也有问题,程序退出后内存中的数据会丢失,但是,Redis提供了对持久化的支持,即可以将内存中的数据异步写入到硬盘中,同时不影响继续提供服务。

1.2.3功能丰富

用作缓存、队列系统等。

Redis可以为每个键设置生存时间(TTL),生存时间到期后键会自动被删除,这一功能配合出色的性能让Redis可以作为缓存系统来使用,成为了缓存系统Memcached的有力竞争者。

性能上:Redis是单线程模型,而Memcached支持多线程,多核服务器上后者性能好点。

但是Redis大多数情况下足够优异都不会成为瓶颈,如果需要用到高级的数据类型或者持久化功能等,Redis会更好点。

作为缓存系统,Redis还可以限定数据占用的最大内存空间,在数据达到空间限制后可以按照一定的规则自动淘汰不需要的键。

除此之外,Redis的列表类型键可以实现队列,并且支持阻塞式读取,可以很容易实现一个高性能的优先队列。同时在更高层面上,Redis还支持“发布 /订阅”的消息模式,可以基于此构建聊天室等系统。

1.2.4简单稳定

Redis提供一百多中命令,但是常用的就十几种。

Redis提供了几十种不同编程语言的客户端库,很好的封装了Redis的命令,使得在程序中与Redis交互变得更容易。

Redis使用C语言开发,代码量只有30000多行,易懂易修改,好维护。

Redis是开源的,稳定版本非常可靠。

最新文章

  1. Ruby-随机数
  2. 【算法】Hough变换
  3. mongodb 使用场景和不使用场景
  4. org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection 原因
  5. 用SQLMAP工具进行SQL注入
  6. mysql变量使用总结
  7. 51nod1199 Money out of Thin Air
  8. 利用Java自带的MD5加密java.security.MessageDigest;
  9. CAS Tomcat实现单点登录
  10. I题 - A+B for Input-Output Practice (VIII)
  11. supesite 标签语法
  12. CVE-2014-3153 com.geohot.towelroot
  13. 解决 Android SDK Manager不能下载旧版本的sdk的问题
  14. SQL点滴5—产生时间demention,主要是时间转换
  15. 关于Wifi室内定位应用中的一些问题:
  16. Centos7防范SYN
  17. WAP用户评论简单实现瀑布流加载
  18. 【EF框架】另一个 SqlParameterCollection 中已包含 SqlParameter。
  19. Laravel 中的异常处理
  20. php rabbitmq的扩展

热门文章

  1. 【Codeforces 27A】Next Test
  2. Industrial Nim
  3. JavaSE 学习笔记之Import 导入(十二)
  4. Linux系统自带服务罗列
  5. [poj1062]昂贵的聘礼_最短路_离散化
  6. 解决vim粘贴时格式混乱的问题
  7. [C++基础]goto的用法
  8. (IT/互联网行业)你给自己当前的职位拼几分?(评分标准,个人看法,勿喷~)
  9. js中DOMContentLoaded和load的区别
  10. Codesys——常用快捷键列表