[Redis]1 基础

最近两天,给自己一年前搞的一个项目加了一个Redis缓存,磕磕绊绊终于搞定了,这里顺手记录一下Redis的基础知识。

Steven-Zhl 头像
[Redis]1 基础

就个人感觉,Redis整体上并不用花太多时间去学习,它更像数据库一样,是一个工具,而不是一个技术。所以这里只以“会用”为目标。

Redis简介

这段算是比较水的内容,想直接进入正文,或者你知道为什么要用Redis的话,可以跳过。

  • Redis全称Remote Dictionary Server,是一个开源的、使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。目前,Redis是最受欢迎的Key-Value数据库之一。
  • 正是由于Redis的高性能、分布式、可扩展等特点,在目前的生产环境中,它多作为数据库缓存、消息队列、分布式锁等使用。从互联网初期到现在,由于磁盘的I/O瓶颈,直接使用MySQL读写数据会导致明显的性能问题,而内存的读写速度远远高于磁盘,所以Redis的应用解决了这个问题。即使是高速SSD普及的当下,内存的I/O速度仍然超出SSD 1~2个数量级,因此Redis仍然相当流行。

题外话:Redis的开源许可证

  • Redis频频更换开源许可证的行为受到了不少的议论。
  • 就在2024年3月21日,Redis官方宣布[1]从Redis 7.4版本开始,将会把开源许可证修改为SSPLv1RSALv2的双重许可。
  • 其实变更许可证的开源软件也不少,但像Redis如此频繁地变更的,可能真没几个。我们这里可以简单回顾一下[2]

首先要明确的是,Redis在开源许可证变更过程中要分为Redis数据库Redis模块,Redis模块属于Redis数据库的扩展,二者的开源许可证是不同的。

  1. Redis最早于2009年发布,使用的是BSD 3-Clause开源许可证[1],后来出现的各种Redis模块则采用了AGPL开源许可证[2]
  2. 2018年,Redis官方将Redis模块的开源许可证更改为Apache 2.0[3],并附带Commons Clause。
  3. 2019年,Redis官方再次将Redis模块的开源许可证更改为RSALv2[4]
  4. 2024年,Redis数据库和Redis模块的开源许可证均被更改为SSPLv1[5]RSALv2的双重许可。
  • 总体来讲,Redis的开源许可证是逐渐紧缩的,这难免会遭到质疑,但好在目前影响主要集中于商业用户,免费社区版的用户并不受影响。

数据类型

我总是喜欢从这个开始聊起。一般来说,基础数据类型越丰富,功能也就会越灵活。

  • Redis包括5种基础数据类型和5种高级数据类型。
类别 数据类型 描述
基础数据类型 String 字符串
基础数据类型 List 列表
基础数据类型 Set 集合
基础数据类型 SortedSet 有序集合
基础数据类型 Hash 哈希表
高级数据类型 Stream 消息队列
高级数据类型 Geospatial 地理空间
高级数据类型 HyperLogLog 基数统计
高级数据类型 Bitmap 位图
高级数据类型 Bitfield 位域

参考资料

  1. 2024.3.21 Redis修改开源许可证
  2. 【开源与商业】谁用谁维护,Redis 要赚钱!

扩展阅读

  1. BSD许可证 - 维基百科
  2. GNU Affero通用公共许可证 - 维基百科
  3. Apache许可证 - 维基百科
  4. License - Redis
  5. Server Side Public License - 维基百科