redis学习| 青训营笔记

61 阅读7分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天

一、重点内容:

本次青训营大作业项目也运用了Redis内存数据库。

1.1 知识要点有哪些?

  • NoSql介绍
  • Redis概述
  • Redis使用

二、详细知识点介绍:

2.1 NoSql介绍

NoSQL是“非关系型数据库”(Not Only SQL)的缩写,指的是与关系型数据库(如MySQL,Oracle等)不同的一类数据存储技术。相对于传统的关系型数据库,NoSQL数据库通常具有更好的可扩展性、更高的性能和更强的灵活性。

NoSQL数据库不同于关系型数据库的最显著特点在于,它们不使用表格来存储数据,而是采用一种更加灵活的文档、键值对、图形或列族等数据模型。NoSQL数据库通常适用于需要大规模、高可用性和可伸缩性的应用程序,如Web应用程序、移动应用程序、社交网络等。

NoSQL数据库的种类很多,包括键值数据库(如Redis)、文档数据库(如MongoDB)、列族数据库(如HBase)和图形数据库(如Neo4j)等。每种类型的数据库都有自己的优点和适用场景,需要根据具体的应用场景选择合适的NoSQL数据库。

2.2 Redis概述

Redis是一个内存数据库,被广泛应用于缓存、消息队列和分布式锁等领域。它是一个开源的、支持多种数据结构(包括字符串、哈希表、列表、集合、有序集合等)的、高性能的非关系型数据库。

Redis的数据存储在内存中,但它也支持将数据定期持久化到磁盘中,以便在服务重启后恢复数据。Redis还支持主从复制和分布式集群,以提高可用性和扩展性。

Redis的优点包括:

  • 高性能:Redis将数据存储在内存中,读写速度非常快,适合于高并发的读写操作。
  • 数据结构丰富:Redis支持多种数据结构,包括字符串、哈希表、列表、集合和有序集合等,使得它可以适应不同的应用场景。
  • 可扩展性:Redis支持主从复制和分布式集群,可以扩展到多台服务器,以提高可用性和处理更大的数据量。
  • 持久化:Redis支持将数据持久化到磁盘中,以便在服务重启后恢复数据,同时也可以通过复制和备份来保证数据的可靠性。

由于Redis具有高性能、丰富的数据结构和可扩展性等优点,因此被广泛用于缓存、消息队列、分布式锁、计数器等场景。

Redis支持多种数据类型,包括五大数据类型:字符串(String)、哈希表(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。

  • 字符串(String):字符串是Redis最简单的数据类型,可以存储任何类型的数据,例如数字、文本、二进制数据等。常用命令有SET、GET、INCR等。
  • 哈希表(Hash):哈希表是一个键值对的集合,可以存储多个字段和值。常用命令有HSET、HGET、HDEL等。
  • 列表(List):列表是一个有序的字符串集合,可以存储多个元素,每个元素都有一个索引。常用命令有LPUSH、RPUSH、LPOP、RPOP等。
  • 集合(Set):集合是一个无序的字符串集合,每个元素都是唯一的。常用命令有SADD、SPOP、SINTER等。
  • 有序集合(Sorted Set):有序集合是一个有序的字符串集合,每个元素都有一个分数,可以按照分数排序。常用命令有ZADD、ZRANK、ZREVRANGE等。

这些数据类型提供了丰富的功能,可以应对不同的应用场景,例如使用哈希表可以存储用户的个人资料,使用列表可以实现消息队列,使用集合可以进行集合运算,使用有序集合可以实现排行榜等功能。需要根据具体的应用场景选择合适的数据类型。

2.3 Redis使用

使用Redis可以分为以下几个步骤:

  1. 安装Redis:可以通过官方网站下载Redis并安装,也可以使用操作系统的包管理工具进行安装。
  2. 启动Redis:启动Redis服务器,可以在命令行中运行redis-server命令,也可以将Redis作为后台服务运行。
  3. 连接Redis:使用Redis客户端连接Redis服务器,可以使用命令行工具redis-cli,也可以使用各种编程语言提供的Redis客户端库。
  4. 使用Redis:连接Redis之后,可以使用Redis支持的多种数据结构(如字符串、哈希表、列表、集合和有序集合等)进行数据存储和读取操作。例如,可以使用以下命令将一个字符串存储到Redis中:
SET key value

可以使用以下命令从Redis中读取该字符串:

GET key
  1. 关闭Redis:当Redis不再需要使用时,可以使用redis-cli客户端发送SHUTDOWN命令关闭Redis服务器,或者使用操作系统提供的工具关闭Redis服务。

除了基本的数据存储和读取操作,Redis还提供了丰富的功能,如发布订阅、事务处理、Lua脚本、过期时间等。需要根据具体的应用场景选择合适的Redis功能和命令进行使用。

三、实践例子:

后端开发中采用Redis的情况主要包括以下几个方面:

  1. 缓存:Redis作为内存数据库,具有快速读写的特点,可以将一些频繁读写的数据放到Redis中进行缓存,从而减轻后端服务器的负载。例如,可以将热点文章、热门商品、用户个人信息等数据存储到Redis中进行缓存,从而提高应用程序的性能。
  2. 分布式锁:在分布式系统中,为了保证数据的一致性,需要使用分布式锁来控制多个节点对同一资源的访问。Redis提供了分布式锁的实现方式,可以用来实现分布式系统中的并发控制。
  3. 计数器和排行榜:Redis的有序集合数据类型可以用来实现计数器和排行榜功能,例如可以使用ZINCRBY命令对一个有序集合中的元素进行计数,使用ZREVRANK命令查询有序集合中某个元素的排名等。
  4. 消息队列:Redis的列表数据类型可以用来实现消息队列,例如可以使用LPUSH命令将消息添加到列表中,使用BRPOP命令从列表中取出消息。
  5. 地理位置查询:Redis的有序集合数据类型可以用来实现地理位置查询,例如可以使用GEOADD命令将经纬度信息存储到有序集合中,使用GEORADIUS命令查询指定半径内的位置信息。

综上所述,后端开发采用Redis主要是为了提高应用程序的性能、实现分布式系统中的并发控制、实现计数器和排行榜、实现消息队列、实现地理位置查询等功能。需要根据具体的应用场景选择合适的Redis功能和命令进行使用。

四、个人总结:

在应用Redis时需要注意以下几点:

  1. Redis是一个内存数据库,需要考虑内存使用量和数据持久化等问题。
  2. Redis的数据结构和命令需要根据具体的应用场景进行选择和使用。
  3. Redis集群和主从复制等高可用机制需要根据应用场景进行配置和使用。

综合考虑以上因素,合理使用Redis可以大幅度提高应用程序的性能和可扩展性。

五、引用参考: