NoSQL(Not Only SQL) 在现今已经应用非常普遍了,尤其是 RedisMongoDB。我们现在来说说 Redis。

前世

Redis 是一个意大利人 Salvatore Sanfilippo(antirez) ,在 2008 年开发一个叫 LLOOGG (已经停止服务,域名都在叫卖了/捂脸)的访客信息追踪网站时(源码),因为用户越来越多而达到了性能瓶颈,为了节约成本,antirez 自己动手写的一个内存数据库。后来,antirez 用 C 语言重写了源码,加上了持久化功能并开源到 GitHub 上,Redis 正式向世界揭开了面纱,并深受欢迎,如 Twitter、Stack Overflow、GitHub、BAT、新浪微博、SOHU、优酷、美团、小米、唯品会等公司都是 Redis 的使用者。其中新浪微博可以说是全球最大的 Redis 使用者。

Redis 全称 Remote Dictionary Server,是一种基于键值对(key-value)的 NoSQL 数据库,它主要有:字符串(Strings)、哈希(Hashs)、列表(Lists)、集合(Sets)、有序集合(Sorted sets/Zsets) 5 种数据类型,同时在字符串的基础上衍生出了位图(Bitmaps)和 HyperLogLogs "数据结构",并且随着 LBS(Location Based Service,基于位置服务)的不断发展,在 Redis 3.2 版本中加入有关 GEO(地理信息定位)的功能。Redis 还提供了键过期、发布订阅、事务、流水线、Lua 脚本等附加功能。除此之外,在持久化、主从复制、高可用(2.8)和集群(3.0)方面也是下足了功夫,逐步得到完善并已相当稳定。

今生

目前,Redis 最新的稳定版是 3.2.8,但已经发布了最新的 4.0 RC2 版本,有更多好玩和完善的东西,可以看看 antirez 写的文章 The first release candidate of Redis 4.0 is out,英文困难户还可以看看黄健宏(huangz)的博文 Redis 4.0 新功能简介

4.0 的新特性简单来说有如下几点:

  • 模块系统,方便开发人员扩展功能。
  • PSYNC 2.0,优化旧版本中主从切换时引起的全量复制问题。
  • LFU(Last Frequently Used) 缓存剔除算法,具体信息见 antirez 的博文 Random notes on improving the Redis LRU algorithm
  • 非阻塞的 DEL 、 FLUSHDB 和 FLUSHALL,尽可能避免删除 key 时导致的服务器阻塞。
  • 混合 RDB-AOF 持久化格式,兼具 RDB 持久化和 AOF 持久化的优点。
  • memory 监控命令,方便观察内存使用情况, 并进行相应的内存管理操作。
  • 集群兼容 NAT 和 Docker
  • 交换数据库,对指定的两个数据库进行互换数据。

说到这里,我们需要冷静一下,Redis 虽然强大,但也不是万能的。在大数据量的时候,Redis 就并不是那么的合适了,毕竟 Redis 是一个内存数据库,会把数据都装到内存中,如果硬要上 Redis,那老板可就要心疼了 _,这基本上是个黑洞;但也不是完全就不可以考虑 Redis 了,我们还是可以把热点数据放到 Redis 中的,其他的数据就不要浪费内存了。

最后,老话说的好:授人以鱼,不如授人以渔,不对,应该是:知其然,知其所以然。Redis 虽然是一个工具,但是知道 Redis 的原理对我们进行开发或者运维都是极好的。Redis 是开源的,我们不用带它看金鱼,可以轻松地从 GitHub 上拉取它的源码,然后慢慢研究它。Redis 的代码量才几万行,对于其他 NoSQL 库而言简直不值一提,但代码却非常优雅,通过阅读源码技能够加深对 Redis 的理解,必要时还可以实现一些自定义的功能,模块系统也可以用起来了。

Alpha:是内部测试版,一般不向外部发布,会有很多 Bug,一般只有测试人员使用。

Beta:也是测试版,这个阶段的版本会一直加入新的功能,在 Alpha 版之后推出。

RC(Release Candidate):用在软件上就是候选版本。系统平台上就是发行候选版本。RC 版不会再加入新的功能了,主要着重于除错。

GA(General Availability):正式发布的版本,在国外都是用 GA 来说明 release 版本的。

RTM(Release to Manufacture):是给工厂大量压片的版本,内容跟正式版是一样的,不过 RTM 版也有出限制、评估版的。但是和正式版本的主要程序代码都是一样的。

OEM:是给计算机厂商随着计算机贩卖的,也就是随机版。只能随机器出货,不能零售。只能全新安装,不能从旧有操作系统升级。包装不像零售版精美,通常只有一面 CD 和说明书(授权书)。 

RVL:号称是正式版,其实RVL根本不是版本的名称。它是中文版/英文版文档破解出来的。 

EVAL:而流通在网络上的 EVAL 版,与“评估版”类似,功能上和零售版没有区别。 

RTL:Retail(零售版)是真正的正式版,正式上架零售版。在安装盘的 i386 文件夹里有一个 eula.txt,最后有一行 EULAID,就是你的版本。比如简体中文正式版是 EULAID:WX.4_PRO_RTL_CN,繁体中文正式版是 WX.4_PRO_RTL_TW。其中:如果是 WX. 开头是正式版,WB. 开头是测试版。_PRE,代表家庭版;_PRO,代表专业版。

α、β、λ常用来表示软件测试过程中的三个阶段:
α 是第一阶段,一般只供内部测试使用;
β 是第二个阶段,已经消除了软件中大部分的不完善之处,但仍有可能还存在缺陷和漏洞,一般只提供给特定的用户群来测试使用;
λ 是第三个阶段,此时产品已经相当成熟,只需在个别地方再做进一步的优化处理即可上市发行。

走进 Redis 的世界的更多相关文章

  1. 走进缓存的世界(三) - Memcache

    系列文章 走进缓存的世界(一) - 开篇 走进缓存的世界(二) - 缓存设计 走进缓存的世界(三) - Memcache 简介 Memcache是一个高性能的分布式内存对象缓存系统,用于动态Web应用 ...

  2. 走进JavaWeb技术世界3:JDBC的进化与连接池技术

    走进JavaWeb技术世界3:JDBC的进化与连接池技术 转载公众号[码农翻身] 网络访问 随着 Oracle, Sybase, SQL Server ,DB2,  Mysql 等人陆陆续续住进数据库 ...

  3. [C#] 走进 LINQ 的世界

    走进 LINQ 的世界 序 在此之前曾发表过三篇关于 LINQ 的随笔: 进阶:<LINQ 标准查询操作概述>(强烈推荐) 技巧:<Linq To Objects - 如何操作字符串 ...

  4. 小丁带你走进git的世界三-撤销修改

    一.撤销指令 git checkout还原工作区的功能 git reset  还原暂存区的功能 git clean  还没有被添加进暂存区的文件也就是git还没有跟踪的文件可以使用这个命令清除他们 g ...

  5. 小丁带你走进git的世界二-工作区暂存区分支

    小丁带你走进git的世界二-工作区暂存区分支 一.Git基本工作流程 1.初始化一个仓库 git  init git  clone git仓库分为两种情况: 第一种是在现有项目或目录下导入所有文件到 ...

  6. 带你走进rsync的世界

    导读 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录.rsync共有3种使用方 ...

  7. 小丁带你走进git的世界三-撤销修改(转)

    一.撤销指令 git checkout还原工作区的功能 git reset  还原暂存区的功能 git clean  还没有被添加进暂存区的文件也就是git还没有跟踪的文件可以使用这个命令清除他们 g ...

  8. C#7.2——编写安全高效的C#代码 c# 中模拟一个模式匹配及匹配值抽取 走进 LINQ 的世界 移除Excel工作表密码保护小工具含C#源代码 腾讯QQ会员中心g_tk32算法【C#版】

    C#7.2——编写安全高效的C#代码 2018-11-07 18:59 by 沉睡的木木夕, 123 阅读, 0 评论, 收藏, 编辑 原文地址:https://docs.microsoft.com/ ...

  9. 【SpringMVC学习02】走进SpringMVC的世界

    上一篇博文主要介绍了springmvc的整个架构执行流程,对springmvc有了宏观上的把握,这一篇博文主要以案例作为驱动,带你走进springmvc的世界.案例中的需求很简单:对商品列表的查询.表 ...

随机推荐

  1. Backbone源码解读(一)事件模块

    Backbone源码浅读: 前言: Backbone是早起的js前端MV*框架之一,是一个依赖于underscore和jquery的轻量级框架,虽然underscore中基于字符串拼接的模板引擎相比如 ...

  2. linux:基本命令

    1.显示日期与时间:date 显示2009/08/17形式的格式:date +%Y/%m/%d 显示17:04时间格式:date +%H/%M 2.显示日历:cal 常用的命令:cal 2009:ca ...

  3. 实现一个类 Vue 的 MVVM 框架

    Vue 一个 MVVM 框架.一个响应式的组件系统,通过把页面抽象成一个个组件来增加复用性.降低复杂性 主要特色就是数据操纵视图变化,一旦数据变化自动更新所有关联组件~ 所以它的一大特性就是一个数据响 ...

  4. 多线程方式实现Socket通信

    一.首先,介绍下两类传输协议:TCP:UDP TCP是Tranfer Control Protocol的 简称,是一种面向连接的保证可靠传输的协议.通过TCP协议传输,得到的是一个顺序的无差错的数据流 ...

  5. [TPYBoard-Micropython之会python就能做硬件 4] 学习使用电位器和1602显示屏

    一.实验器材 1.TPYboard V102板  一块 2.电位器   一个 3.1602 屏 一块 4.杜邦线:若干 二.电位器的使用 电位器 (英文:Potentiometer)是可变电阻器的一种 ...

  6. androidTv界面刷新跳动的问题

    今天刚完成老大要求的新模块,在界面刷新的时候遇到了一些问题:一个scrollview动态的添加控件且控件中的数据进行更换的时候,出现的界面跳动的问题 刚开始以为是界面没有展示完全配合scrollvie ...

  7. js实现淘宝首页图片轮播效果

    原文:http://ce.sysu.edu.cn/hope2008/Education/ShowArticle.asp?ArticleID=10585 <!DOCTYPE html> &l ...

  8. JAVA函数的重载

    一.什么是重载(overlording) 在JAVA中,可以在同一个类中存在多个函数,函数名称相同但参数列表不同.这就是函数的重载(overlording).这是类的多太性表现之一. 二.重载的特征: ...

  9. swift 2.0 与 OC 相比较,标签栏和导航栏书写的差别

    下面是swift书写的时候的两个方法,其实这里不是教大家怎么样写的这个问题,我是想通过这两个不同语言的进行的一个比较,向大家找他们之间“想法”上的一些相同点,这样子我们学习swift的时候,就可以更加 ...

  10. keepalived原理

    Keepalived的作用是检测服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工 ...