当前位置: 首页 > 科技观察

Redis简介小白及基础搭建

时间:2023-03-18 21:16:41 科技观察

Redis简介什么是Redis?Redis的全称是RemoteDictionaryServer。什么是NoSQL?NoSQL最常见的解释是naon-relational,一种非关系型数据库。还有一种说法,NotOnlySQL不只是SQL。NoSQL只是一个概念,泛指非关系型数据库,与关系型数据库不同。它们不保证关系数据的ACID属性。ACID是A(Atomicity)原子性C(Consistency)一致性I(Isolation)独立性D(Durability)持久性Redis提供了多种键值对数据类型来适应不同场景下的存储需求。NoSQL的代表作为NoSQL的代表,主要有MongoDB、Redis、Memcached、NoSQL的优点。与关系型数据库模型相比,Redis有很多优点,易于扩展。NoSQL数据库有很多种,但是一个共同的特点就是去掉了关系型数据库的关系型特征。数据之间没有关系,所以非常容易扩展。大数据量、高性能NoSQL数据库的读写性能非常高,尤其是在大数据量的情况下,表现也非常出色。灵活的数据模型NoSQL不需要预先创建字段,消除了关系数据库一旦建立字段,扩展性很差的不利情况。NoSQL已准备好存储自定义数据格式。高可用NoSQL可以在不影响性能的情况下轻松实现高可用架构。例如Cassandra和HBase模型也可以通过复制模型实现高可用。Redis数据类型Redis支持的数据类型主要有五种,分别是strings-stringsstringstring是Redis中最简单的数据类型,它和Memcached是同一种类型,一个key对应一个value,这个key/value对应的方法称为键值对。字符串在许多示例中都很有用,例如缓存HTML片段和网页。Set——setset就是一个集合,类似于我们数学中的集合概念。对集合的操作包括元素的添加和删除,以及多个集合的相交和相减等操作。操作中的键被理解为集合的名称。Hash——hashhash是键值(key=>value)对的集合;是string类型字段和值的映射表,hash特别适合存储对象。列表-listRedis列表是简单的字符串列表,按插入顺序排序。您可以将元素添加到列表的头部(左)或尾部(右)。列表类型常用于消息队列服务中,完成多个程序之间的消息交互。有序集合——zsetRediszset和set一样,也是字符串类型元素的集合,不允许有重复的成员。当你需要一个有序且不重复的集合列表时,你可以选择sortedset数据结构。Redis的安装Redis支持在Linux、OSX、BSD等POSIX系统中安装,也支持在Windows中安装。Windows和Linux下的安装请参考https://www.runoob.com/redis/redis-install.html我自己的电脑是mac系统,mac系统的安装过程是https://www.jianshu...需要先了解Redis的可执行文件。如果下载了tar.gz安装包,可以使用makeinstall编译,编译完成后会在/usr/local/bin目录下生成如下可执行文件。让我们一起来了解一下这些可执行文件的功能吧。redis-benchmark是一款Redis性能测试工具,可以使用redis-benchmark进行benchmark,比如redis-benchmark-q-n100000,这个工具使用起来很方便,可以使用自己的benchmark工具redis-check-rdbRDB文件检查工具,rdb是Redis的一种持久化方式redis-check-aofAOF文件检查工具,aof也是Redis的一种持久化方式。关于这两种持久化方式,后面再讲redis-sentinel。Redis-sentinel是一个独立运行的进程,用于监控多个主从集群,自动发现masters宕机,自动切换slave>master。redis-cli、redis-cli和后面的redis-server是常用的也是比较重要的命令。这是你登录redis的命令。redis-server,redis-server是redis的后台服务器。一种是直接运行redis-server,另一种是通过redis脚本启动。前者一般用于开发环境,脚本启动一般用于生产环境。这里我们直接使用直接启动的方式。直接运行redis-server启动redis,或者指定redis的端口运行redisredis-server--port6380这里就不贴图了。Redis停止考虑到Redis可能正在同步内存中的数据到硬盘,强行执行Redis的停止命令可能会导致数据丢失。正确的停止Redis的方法应该是向Redis发送SHUTDOWN命令,如下redis-cliSHUTDOWN这里你可能不知道redis-cli是什么命令,我们下面说说。当Redis收到SHUTDOWN命令时,会先断开所有客户端连接,然后根据配置进行持久化,最后退出。也可以使用killRedis端口来正常结束Redis,与SHUTDOWN命令效果相同。Redis命令行客户端下面说说redis-cli命令。redis-cli和redis-server都是Redis中非常重要的工具。要知道redis-cli的全称是RedisCommandLineInterface,是Redis自带的命令行工具,主要有以下几种用法。通过redis-cli向Redis发送命令有两种方式。一种是将命令作为redis-cli的参数执行,比如上面的redis-cliSHUTDOWN命令,redis-cli在执行时会根据默认的主机和端口号进行连接,默认的主机和端口号是127.0.0.1和6379分别。也可以通过-h和-p参数自定义地址和端口号连接Redisredis-cli-h127.0.0.1-p6379Redis提供PING命令测试客户端与Redis连接是否正常。如果正常,会回复一个PONG响应。redis-cliPING命令的返回值如下。大多数情况下,执行一条命令后,我们希望得到命令的返回值。在Redis中,Redis的命令返回值主要有5种。redis-cli的显示结果因类型不同而不同。状态回复状态回复(statusreply)是最简单的回复。例如,向Redis发送SET命令设置某个key的值,Redis会回复OK表示设置成功。我们上面说的PING和PONG也是一种状态回复。状态回复会直接显示状态信息。Errorreply错误回复(errorreply)是指当一个命令不存在或者命令有错误时,会出现一个错误回复,然后是一个错误信息。比如执行一个不存在的指令整型回复Redis没有整型,但是它提供了一些整型操作的指令,比如INCR命令自增键值,会以整型形式返回自增后的键值。除此之外,其他一些命令也返回整数。整数回复(integerreply)以整数开头,后面跟一个整数数据字符串回复字符串回复(bulkreply)是最常见的回复类型,当请求一个字符串类型键的键值或一个任何其他类型的元素时of键将得到一个字符串回复。字符串回复用双引号括起来。还有一种情况,当请求的key值不存在时,会返回nli,表示返回空结果。Multi-linestringreply多行字符串回复(multi-bulkreply)也很常见,比如请求一个非字符串键元素列表时,会收到一个多行字符串回复redis配置redis可以支持自定义配置,比如是否启用持久化,配置日志级别等。由于可配置的选项很多,通过启动来配置这些选项是不合理的,所以可以由程序员手动配置。启用配置文件的方式是在启动时将配置文件的路径作为启动参数传递给redis-server,如下:redis-server/path/redis.conf传递同名参数会覆盖对应的参数在配置文件中,如下redis-server/path/redis.conf--loglevelwarningRedis提供了一个配置文件模板redis.conf,Redis也支持动态配置修改,可以使用CONFIGSET命令动态修改Redis而不用重启RedisCONFIGSETloglevelwarningRedisMore数据库切换Redis是一个字典结构的存储服务器。实际上,一个Redis实例提供了多个字典来存储数据,客户端可以指定将数据存储在哪个字典中。每个数据库都在外部命名,从0开始递增编号。Redis默认支持16个数据库,这个编号可以通过配置数据库进行修改。客户端与Redis建立连接后,默认会选择0号数据库,但可以使用select命令切换数据库。命令select1会选择1号数据库,这些数据库与我们通常理解的MySQL数据库不同。首先,Redis不支持自定义数据库的名称。每个数据库都以一个数字命名。开发人员必须记录哪些数据库存储哪些数据。此外,Redis不支持为每个不同的数据库设置不同的访问密码。最重要的是多个数据库并不是完全隔离的。例如,FLUSHALL命令将清除所有数据库中的数据。