Redis入门学习(上)

第一章 简介

1.1 历史与发展

曾听到过的一句经典名言:“世界上有一个伟大的东西叫百度,百度能教会你许多,学会百度是一种能力与技巧”

1.2 Redis特性

1.2.1 存储结构

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

  • 字符串类型
  • 散列类型
  • 列表类型
  • 集合类型
  • 有序集合类型

字典结构: 字典,在其他语言中也称 map,使用 键-值对(key-value)存储,查找速度快。
字典是无序的对象集合,元素是通过键来存取的,而不是通过索引值存取。
字典是可变数据类型

通俗易懂的讲就是:你们使用微信小程序访问接口时,传输数据给后台给data,那个data就是字典结构

1.2.2 内存存储与持久化

Redis数据库中的所有数据都存储在内存中。由于内存读写速度远快于硬盘,因此Redis在性能上对比其他硬盘存储的数据库有非常明显的优势。在一台普通的笔记本电脑上,Redis可以再一秒内读写超过10W个键值

那么有一个问题,程序退出后,内存的数据会丢失,那这样如何使得Redis持久化呢?

Redis可以在内存中的数据异步写入到硬盘中,同时不影响继续提高服务

1.2.3 功能丰富

Redis虽然是基于数据库开发的,但是由于提高了丰富的功能,越来越多的人将其用做缓存、队列系统等。

  • Redis可以设置生存时间(Time To Live, TTL), 生存时间到期后键会自动被删除,这一功能配合出色的性能让Redis可以作为缓存系统使用
  • 作为缓存系统,Redis可以限定数据占用的最大内存空间,在数据达到空间限制后可以按照一定的规则自动淘汰不需要的键
  • Redis的列表类型键可以用来实现队列,并且支持阻塞式读取,可以很容易地实现一个高性能的优先级队列

1.2.4 简单稳定

Redis直观的存储结构使得通过程序与Redis交互十分简单。在Redis中使用命令来读写数据,命令语句之于Redis就相当于SQL语言之于关系数据库

eg: 在关系数据库中要获取posts表内id为1的记录的title字段的值

SQL: SELECT title FROM posts WHERE id = 1 LIMIT 1

Redis: HGET post:1 title

此外,Redis提供了十几种不同编程语言的客户端库,这些库很好的封装了Redis的命令,使得在程序中与Redis进行交互变得容易

第二章 准备

2.1 安装Redis

2.1.1 在POSIX系统中安装

曾听到过的一句经典名言:“世界上有一个伟大的东西叫百度,百度能教会你许多,学会百度是一种能力与技巧”

2.1.2 在OS X系统中安装

曾听到过的一句经典名言:“世界上有一个伟大的东西叫百度,百度能教会你许多,学会百度是一种能力与技巧”

2.1.3 在Windows安装

安装包和安装教程即可完成,操作很简单

然后

曾听到过的一句经典名言:“世界上有一个伟大的东西叫百度,百度能教会你许多,学会百度是一种能力与技巧”

2.2 启动和停止Redis

命 令 说 明
redis-server Redis服务器
redis-cli Redis命令行客户端
redis-benchmark Redis性能测试工具
redis-check-aof AOF文件修复工具
redis-check-dump RDB文件检查工具
redis-sentinel Sentinel服务器(2.8版以后)

注: redis-cli是Redis自带的Redis命令行客户端,一般都用它进行学习和测试

2.2.1 启动Redis

启动Redis有直接启动和通过初始化脚本启动两种方式,分别使用与开发环境和生产环境

  1. 直接启动

    直接运行redis-server即可启动Redis

  2. 通过初始化脚本启动Redis

    曾听到过的一句经典名言:“世界上有一个伟大的东西叫百度,百度能教会你许多,学会百度是一种能力与技巧”

2.2.2 停止Redis

考虑到一个问题:Redis有可能正在将内存中的数据同步到硬盘中,强行终止Redis进程可能会导致数据丢失。正确停止Redis的方式是使用命令

redis-cli SHUTDOWN

执行命令,会先断开所有客户端连接,然后根据配置执行持久化,最后完成退出

2.3 Redis命令行客户端

嘿嘿~ 这在我们学习和测试中非常重要

2.3.1 发送命令

打开cmd输入命令,见图所示

image

2.3.2 命令返回值

执行一条命令后,我们往往都会关心命令的返回值

  1. 状态回复

    是最简单的一种回复, 即状态回复直接显示状态信息

  2. 错误回复

    当出现命令不存在或命令格式有错误等情况时,Redis会返回错误回复(error reply)。错误回复以(error)开头,并在后面跟上错误信息

  3. 整数回复

    Redis,没有整数类型,但是提供了一些用于整数操作的命令,如递增键值的INCR命令会以整数形式返回递增后的键值。除此外,一些其他命令也很返回整数,例如获取当前数据库中键的数量时

  4. 字符串回复

  5. 多行字符串回复

下面一张图,涵盖了上面五种回复

image

2.4 配置

设置端口号、是否开启持久化、日志级别等

曾听到过的一句经典名言:“世界上有一个伟大的东西叫百度,百度能教会你许多,学会百度是一种能力与技巧”

2.5 多数据库

通过前面的学习Redis是一个字典结构的存储服务器,而实际上Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中。

Redis默认支持16个数据库,每个数据库对外都是一个从0开始的递增数字命名。可以通过修改配置来修改这一数字。客户端与Redis建立连接后自动选择0号数据库

image

需要注意的几点:

  1. 每个数据库都是以编号制命名的,开发者必须自己纪录哪些数据库存储了哪些数据
  2. 多个数据库之间并不是完全隔离的,比如FlUSHALL命令可以情况一个Redis实例中所有数据库中的数据,FLUSHDB情况当前数据库中的数据
  3. Redis非常轻量级,一个空的Redis实例占用的内存只有1MB左右,所有不用担心多个Redis实例会额外占用很多内存

猜你喜欢

转载自blog.csdn.net/weixin_44723496/article/details/106323721