今天我们学习一种新的NoSQL数据库,叫做Redis。Redis是一种基于键值对(key-value)的NoSQL数据库。Redis与其它数据库相比,不同的是Redis的值可以存储多种数据类型。它们具体包括:string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、GEO(地理信息定位)等。除此之外Redis还会将数据保存到内存中,所以Redis数据库地读写性能非常高。这时可能有人会说,那Redis岂不是很不安全,因为保存在内存中的数据是不安全的,如果碰到突然断电或者系统故障的话,那保存到Redis中的数据岂不是就要丢失了。在这一点上,我们恰恰不用担心,因为Redis为我们提供了快照和日志等方式,来允许我们将内存中的数据保存到硬盘上,这样当遇到上述故障重Redis时,Redis就会重新从硬盘加载已经保存好的数据,重新加载到内存中。除了上述功能外,Redis还提供了很多附加的高级的功能。如键过期、发布订阅、事物、流水线、Lua脚本等功能。下面我们看一下Redis中的特性。
当我们下载完成后,我们只需执行下面的命令就可以采用源码的方式,安装Redis。
tar xzvf redis.tar.gz // 解压当前压缩包ln -s redis redis // 创建一个redis目录软链接cd redis // 进入redis目录make // 编译make install // 安装
当我们安装完成后可以直接执行下面命令查看redis的版本,如果没有显示版本则表示可能redis安装失败,或者,当前目录不至此此命令
redis-cli -v
在Redis安装成功后的bin目录下会有很多以redis开头的可执行文件。掌握这些文件的使用,可以帮助我们更好的理解redis的使用。下在我们来简单介绍一下bin目录下的相关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-cli - h {host} -p {port}
我们看上面的信息,已经成功将hello world信息存储到了Redis中的。除了上述的操作外,我们还可以直接获取Redis中的值。具体操作如下:
如果我们没有修改Redis默认的端口,并且访问的是本地Redis服务的话,那么我们在用redis-cli命令连接Redis服务时,就可以不用指定 -h参数和-p参数了。
在我们不需要连接Redis服务时,我们可以使用下面的命令来优雅的方式停止Redis服务,既然有优雅的方式,当然也有相对暴力的方式停止服务,也就是直接杀掉进程的方式。但Redis不推荐使用这个方式停止Redis服务,因为这种方式可能会导致Redis相关数据的丢失。下面我们看优雅的停止Redis服务的命令。
redis-cli shutdown
采用这种方式停止Redis服务时,Redis会自动的生成持久化文件,从而保证Redis中的数据的不会丢失。当然我们也可以添加相关参数则让Redis服务在执行上述命令时不生成持久化文件。具体的命令如下:
redis-cli shutdown nosave|save