首页 > 编程知识 正文

redis手册(redis从入门到精通)

时间:2023-05-04 12:43:50 阅读:96995 作者:3812

今天我们学习一个新的NoSQL数据库,叫做Redis。Redis是一个基于键值对的NoSQL数据库。与其他数据库相比,Redis的不同之处在于Redis的值可以存储许多数据类型。具体包括:字符串(string)、hash(hxdxg)、list (list)、set (set)、zset(有序集)、Bitmaps(位图)、GEO(地理信息位置)等。此外,Redis还将数据保存到内存中,因此Redis数据库的读写性能非常高。这时可能有人会说Redis不太安全,因为内存中存储的数据不安全。如果突然断电或系统故障,存储在Redis中的数据将会丢失。在这一点上,我们只是不用担心,因为Redis为我们提供了快照和日志,允许我们将内存中的数据保存到硬盘中,这样当Redis遇到上述故障时,Redis就会将保存的数据从硬盘中重新加载到内存中。除了上述功能,Redis还提供了许多额外的高级功能。比如密钥过期、发布和订阅、事物、管道、Lua脚本等功能。让我们来看看Redis中的特性。

Redis的特点我们前面提到Redis的执行速度非常快。我们从几个方面来介绍一下Redis为什么这么快。首先,Redis中的所有数据都存储在内存中。我们知道直接操作内存和直接操作磁盘有很大的区别,因为操作磁盘会耗费大量的IO。因此,这也是Redis将数据保存在内存中,提高性能的原因之一。其次,Redis是用C语言编写的。至此,我们知道C语言是最接近汇编的语言,也就是最接近操作系统的语言。所以在执行速度上,也会比间接的提高Redis的执行效率。还有一个原因,就是Redis采用了单线程架构,有防止多线程带来的竞争问题的优势。虽然Redis是一个键值对的数据库,但是Redis中的值不仅可以存储字符串,还可以存储各种数据类型。也就是前面提到的字符串、hxdxg、列表、集合、有序集合等。除了以上五种数据结构,Redis还提供了多种附加功能。比如密钥过期(可以实现缓存功能)、发布订阅(可以实现消息系统)、管道(可以一次执行一批命令,减少网络开销)、Lua脚本(可以通过Lua语言创建新的Redis命令)等等。Redis提供了一个简单的TCP通信协议,支持多种语言,可以很方便的接入Redis。坚持。如前所述。在Redis中,内存中的数据可以通过快照和日志功能持久化到硬盘上。主从副本。Redis中提供了复制功能。它可以实现Redis同一数据的多份拷贝,依次实现Redis的分布式存储。已分发。redis中提供了Redis哨兵功能,可以保证Redis节点出现故障时自动转移。依次保证Redis的安全性。此外,Redis还提供了Redis集群功能。正是通过这个功能,保证了Redis真正的分布式实现。Redis可以做什么来缓存?通过Redis中的密钥过期功能,我们可以为密钥设置一个过期时间,这样当密钥超过过期时间时,当前保存的密钥信息就失效了。这就是如何用Redis实现缓存功能。排名系统。Redis中提供了列表和有序列表。有了这个功能,我们可以轻松实现排行榜功能和计数器。在我们平时购物的时候,会发现很多类似于购物网站浏览量的数据。每次我们访问时,数据都会增加1。如果采用传统的数据库方法,由于并发量大,会对数据库的性能产生相应的影响。但是用Redis计算会容易很多,因为在Redis中会在内存中计算,所以计数器的性能会很高。当然,除此之外,Redis还可以用来实现社交网络中的点赞、踩、粉丝、互助好友等功能。消息队列。Redis提供了发布、订阅和阻塞队列的功能。虽然我们可以使用专业的消息队列,但Redis可以支持一般的队列功能。Redis中的注意事项我们知道Redis将数据存储在内存中。虽然存储在内存中时会提到数据访问的性能,但如果我们将所有数据都保存在内存中,相应的内存可能会泄漏,从而导致系统瘫痪。我们知道,将数据存储在内存中的目的是为了提高数据访问的性能。那么在设计系统的时候,如何确定哪些数据应该保存在Redis中,哪些数据不需要保存在Redis中呢?一般来说,数据分为热数据(频繁操作的数据)和冷数据(不频繁操作的数据)。众所周知,提高数据访问性能的主要原因是大量的并发操作。正因为如此,如果不把大部分用户访问的公共数据放入内存,必然会导致程序不稳定。因此,我们应该将公共数据存储在Redis中。

相反,如果不是公共数据,就不会产生大量并发,所以我们不需要把这部分数据存储在Redis中。通过上面的介绍,Redis的安装让我们知道了Redis在系统架构中有着不可替代的作用,而且大部分企业系统架构都采用了Linux系统部署,所以我们在介绍安装的时候会重点介绍Linux系统的安装。因为本文将使用源代码进行安装,并且因为Linux系统和Mac OS系统的源代码安装方式相同,所以本文将使用Mac OS系统来演示安装过程。首先,我们访问Redis官方网站。选择Redis的源包。操作如下图所示:

rom=pc">

当我们下载完成后,我们只需执行下面的命令就可以采用源码的方式,安装Redis。

tar xzvf redis.tar.gz // 解压当前压缩包 ln -s redis redis // 创建一个redis目录软链接 cd redis // 进入redis目录 make // 编译 make install // 安装

当我们安装完成后可以直接执行下面命令查看redis的版本,如果没有显示版本则表示可能redis安装失败,或者,当前目录不至此此命令

redis-cli -v

在Redis安装成功后的安详的火龙果目录下会有很多以redis开头的可执行文件。掌握这些文件的使用,可以帮助我们更好的理解redis的使用。下在我们来简单介绍一下安详的火龙果目录下的相关redis命令。

可执行文件作用redis-server启动Redisredis-cliRedis命令行客户端 redis-benchmarkRedis基准测试工具 redis-check-aofRedis AOF持久化文件检测和修复工具 redis-check-dumpRedis RDB持久化文件检测和修复工具 redis-sentinel启动Redis Sentinel

下面我们用上面提到的命令来启动Redis,也就是redis-server命令。

通过上面的启动信息,可以使我们知道当前Redis的版本是4.0.9,端口是6379(Redis的默认端口)。那如果我们要修改Redis的端口,应该怎么做呢?在Redis中我们可以很方便的实现,也就是在redis-server命令后直接添加端口即可。具体命令如下:

redis-server --port 6380

在Redis中我们除了上述的方式外,还可以通过修改配置文件的方式来修改端口(不只是端口,还有其它的相关配置),并且这种方式,是Redis官方推荐的方式。Redis中的配置文件在redis.conf文件中,下面我们看一下redis.conf文件中相关参数的说明。

配置名配置说明port端口logfile日志文件dirRedis工作目录(存放持久化文件和日志文件)daemonize是否以守护进程的方式启动Redis

下面我们修改redis.conf文件中的port属性,然后启动Redis服务,看一下Redis端口是否成功被修改。

下面我们用配置文件中的方式来启动Redis服务。

redis-server /redis.conf

Redis命令行客户端既然我们已经成功的启动了Redis服务,下面我们用下面的命令来访问我们的Redis服务。redis-cli - h {host} -p {port}

我们看上面的信息,已经成功将hello world信息存储到了Redis中的。除了上述的操作外,我们还可以直接获取Redis中的值。具体操作如下:

如果我们没有修改Redis默认的端口,并且访问的是本地Redis服务的话,那么我们在用redis-cli命令连接Redis服务时,就可以不用指定 -h参数和-p参数了。

停止Redis服务

在我们不需要连接Redis服务时,我们可以使用下面的命令来优雅的方式停止Redis服务,既然有优雅的方式,当然也有相对暴力的方式停止服务,也就是直接杀掉进程的方式。但Redis不推荐使用这个方式停止Redis服务,因为这种方式可能会导致Redis相关数据的丢失。下面我们看优雅的停止Redis服务的命令。

redis-cli shutdown

采用这种方式停止Redis服务时,Redis会自动的生成持久化文件,从而保证Redis中的数据的不会丢失。当然我们也可以添加相关参数则让Redis服务在执行上述命令时不生成持久化文件。具体的命令如下:

redis-cli shutdown nosave|save

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。