Redis入门指南 第1章 简介 Redis的几项特性

版权声明:个人水平有限,表述不当或疏漏之处欢迎读者提问交流,共同进步! 作者:J__Max 非商业转载请注明出处,商业转载请联系作者获得授权。 https://blog.csdn.net/J__Max/article/details/86743052

Redis入门指南 第1章 简介 Redis的几项特性

  • 之前在做爬虫相关的demo时接触到了Redis,它基于键值对的存储系统吸引了我。它的操作十分方便,而且性能也高。趁着假期,系统地自学一下Redis,通过写博客的方式来记录、总结和分享

简介

  • Redis 是一个开源的、高性能的、基于键值对的缓存与存储系统,通过提供多种键值数据类型来适应不同场景下的缓存与存储需求

  • Redis 是一个高性能的 key-value 数据库,与其他 key-value 缓存产品相比有一下几个特点:

    • Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用

    • Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list, set, zset, hash 等数据结构的存储

    • Redis 支持数据的备份,即 master-slave 模式的数据备份

特性

  • 1) 存储结构

    • Redis 是 REmote DIctionary Server (远程字典服务器) 的缩写,它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。Redis 字典中的键值除了可以是字符串,还可以是其他数据类型,到目前为止 Redis 支持的键值数据类型如下:

      • 字符串类型

      • 散列类型

      • 列表类型

      • 集合类型

      • 有序集合类型

    • Redis 的这种字典形式的存储结构与常见的 MySQL 等关系数据库的二维表形式的存储结构有很大的差异。例如,如下所示,在程序中使用 post 变量存储了一篇文章的数据(包括了标题、正文、阅读量和标签):

      post["title"] = "Hello World!"
      post["content"] = "balabala..."
      post["views"] = 0
      post["tags"] = ["PHP", "Java"]
      
    • 如果要将这篇文章的数据存储在数据库中,并且要求可以通过标签检索出文章。使用关系数据库存储的话,一般会将其中的标题、正文和阅读量存储在一个表中,而将标签存储在另一个表中,然后使用第三个表(联系表)来连接文章和标签表。需要查询时还得将3个表进行连接,不是很直观。而 Redis 字典结构的存储方式和对多种键值数据类型的支持使得开发者可以将程序中的数据直接映射到 Redis 中,数据在 Redis 中的存储形式和其在程序中的存储方式非常相近。使用 Redis 的另一个优势是其对不同的数据类型提供了非常方便的操作方式,如使用集合类型存储文章标签, Redis 可以轻易地实现对标签进行如交集、并集等集合操作

  • 2)内存存储与持久化

    • Redis 数据库中的所有数据都存储在内存中。由于内存的读写速度远快于硬盘,因此 Redis 在性能上对比其他给予硬盘存储的数据库有非常明显的优势

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

  • 3)功能丰富

    • Redis 虽然是作为数据库开发的,但由于其提供了丰富的功能,越来越多的人将其用作缓存、队列系统等。而且 Redis 可以为每个键设置生存时间(Time To Live, TTL),生存时间到期后键会自动被删除。这一功能配合出色的性能让 Redis 可以作为缓存系统来使用

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

    • 除此之外,Redis 的列表类型键可以用来实现队列,并且支持阻塞式读取,可以很容易地实现一个高性能的优先级队列

  • 4)简单稳定

    • 即使功能再丰富,如果使用起来太复杂也很难吸引人。Redis 直观的存储结构使得通过程序与 Redis 交互十分简单。在 Redis 中使用命令语句来读写数据,命令语句之于 Redis 就相当于 SQL 语句之于关系数据库。例如,在关系数据库中要获取 posts 表中 id 为 1 的记录的 title 字段的值,可以使用如下的 SQL 语句实现:

      SELECT title FROM posts WHERE id = 1 LIMIT 1
      
    • 相对应的,在 Redis 中要获取键名为 post:1 的散列类型键的 title 字段的值,可以使用如下语句实现:

      HGET post:1 title
      
    • 其中 HGET 就是一个命令, Redis 提供了 100 多个命令,但常用的也就几十个。后面将开始学习 Redis 中的键值类型以及类型所对应的命令语句

猜你喜欢

转载自blog.csdn.net/J__Max/article/details/86743052