NoSQL(Not Only SQL) 在现今已经应用非常普遍了,尤其是 Redis 和 MongoDB。我们现在来说说 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. 走进JavaWeb技术世界16:极简配置的SpringBoot

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  2. DEVOPS架构师 -- 01走进Docker的世界

    文章目录 第一天 走进Docker的世界 认识docker 为什么出现docker 什么是docker docker能做什么 版本管理 发展史 小结 安装 配置宿主机网卡转发 Yum安装配置docke ...

  3. 一起走进计算机视觉的世界

    计算机视觉简介 计算机视觉是一门研究如何使机器"看"的科学,更进一步的说,就是指用摄影机和计算机代替人眼对目标进行识别.跟踪和测量等,并进一步做图像处理,用计算机处理成为更适合人眼 ...

  4. 【密码学】一万字带您走进密码学的世界(下)

    引文 密码学是研究编制密码和破译密码的技术科学.研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学:应用于破译密码以获取通信情报的,称为破译学,总称密码学. 在<一万字带您走进密 ...

  5. 【密码学】一万字带您走进密码学的世界(上)

    引文 密码学是研究编制密码和破译密码的技术科学.研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学:应用于破译密码以获取通信情报的,称为破译学,总称密码学. 为了使读者对密码学有一个整 ...

  6. 带你走进rsync的世界

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

  7. 走进缓存的世界(一) - 开篇

    系列文章 走进缓存的世界(一) - 开篇 走进缓存的世界(二) - 缓存设计 走进缓存的世界(三) - Memcache 概述 对于程序员来说多多少少都懂一点算法,算法是什么?算法是"时间& ...

  8. 汇编html文档,欢迎走进HTML的世界汇编.ppt

    欢迎走进HTML的世界汇编 在HTML里用 和 划分段落, 可以不成对出现. 欢迎使用 HTML 这会是一种很有趣的体验 另一个段落元素 段落划分 使用对齐属性修饰段落 学习HTML 这会是一种很有趣 ...

  9. 走进JavaWeb技术世界7:Tomcat和其他WEB容器的区别

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  10. 如何走进程序的世界?

    在IT领域,谈论最多的可能就是程序.可以把整个领域比作一个"大锅饭",每个程序员都想从中分得一杯羹.不过,程序可能真的不是那么好写的. 下面来谈谈一点个人感想. 如果要学写程序,最 ...

最新文章

  1. excel之根据单元格内容自动修改单元格颜色
  2. 当中台遇上DDD,我们该如何设计微服务?
  3. 【Python3_基础系列_009】Python3-条件语句-If
  4. 11.2 滑动窗口-机器学习笔记-斯坦福吴恩达教授
  5. tomcat6 优化初步
  6. 科大星云诗社动态20210323
  7. docker 的资源控制和数据管理
  8. SAP UI5 bindItem will cause OData refresh
  9. IDEA导入Maven项目,pom.xml文件中 有inspects a maven model for resolution problems报错 !!!!!!!!!!有用
  10. C++ 11 深度学习(七)位运算常见操作
  11. Windows下 Apache配置虚拟主机
  12. c语言程序设计考场排座位,“听说学霸座位是这个?”老师揭秘排座,真正的C位其实在这里……...
  13. tensorflow学习(一)——有关tensorflow不同层的使用(tf.nn 和tf.layers以及tf.contrib.layers)的简单区别
  14. android 焦点动画,在一个视图/imageview上获得焦点时,实现android缩放动画?_animation_开发99编程知识库...
  15. Vapnik-Chervonenkis Dimension 理解
  16. windows系统TLQ8安装时提示载入java vm时windows出现错误
  17. STM32中使用MMA7660重力加速度传感器
  18. [02.20][中国][人再囧途之泰囧][HD-RMVB.720p.国语中字][2012年喜剧]
  19. 数据结构-交换排序:(冒泡排序和快速排序)
  20. 苹果系列产品文件共享神器

热门文章

  1. web安全:QQ号快速登录漏洞及被盗原理
  2. Aras Innovator 11 sp2安装
  3. 2011年好莱坞大片索引
  4. 巧用Q盘搭建SVN服务器
  5. candence的图纸大小设置_关于无法修改图纸大小的问题
  6. 真无线蓝牙耳机哪个音质最好?2021入门级蓝牙耳机排行榜!
  7. 初学者入门编程最开始要学什么?
  8. js限制input的输入字符的长度,区分中英文
  9. android获取ssid,有关WiFi SSID的获取
  10. 什么是 IP 冲突以及如何解决?