1.1 什么是Redis
Redis是使用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,Redis支持以下五种数据类型:
- String类型
- List类型
- Set类型
- SortedSet类型
- Hash类型
1.2 Redis应用场景
- 缓存
- 分布式集群架构中session分离
- 任务队列
- …
1.3 安装Redis
从Redis官网上下载即可,我使用的是4.0.8,点我下载。
我将其放在了/usr/local目录中:
wxs@ubuntu:/usr/local$ ls
bin etc games include lib man redis-4.0.8.tar.gz sbin share src
解压到当前文件夹,并将其重命名为redis
wxs@ubuntu:/usr/local$ sudo tar zxvf redis-4.0.8.tar.gz
wxs@ubuntu:/usr/local$ sudo mv redis-4.0.8 redis
wxs@ubuntu:/usr/local$ cd redis/
wxs@ubuntu:/usr/local/redis$ ls
00-RELEASENOTES COPYING Makefile redis.conf runtest-sentinel tests
BUGS deps MANIFESTO runtest sentinel.conf utils
CONTRIBUTING INSTALL README.md runtest-cluster src
对其进行编译(需要先行安装gcc
)
wxs@ubuntu:/usr/local/redis$ sudo make
注:如果make时报
zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory
这个错,请使用make MALLOC=libc
命令
1.4 运行Redis
编译完成后进入src文件夹,其中有两个关键的文件:redis-server
和redis-cli
。
运行redis-server
,映入眼帘的是一张巨大的面包图:
其中Port
表示redis的端口号,PID
表示改进程的pid号,下方光标不停的闪动,此时redis就已经启动了,但是这个窗口不能够使用了。
因此我们新开一个窗口,运行redis-cli
,顾名思义,这是redis的命令行模式。前面说了redis支持五种数据类型,我们存一个字符串来测试下:
wxs@ubuntu:/usr/local/redis/src$ ./redis-cli
127.0.0.1:6379> set username jitwxs
OK
127.0.0.1:6379> get username
"jitwxs"
127.0.0.1:6379>
成功取到了我们设置的数据!
Tip:如果我们要连接远程Redis,可以加参数:./redis-cli -h IP地址
如果要指定端口,加参数:./redis-cli -p 端口号
1.5 后端模式
但是这样的话开的第一个窗口不就是没有什么用处了吗,还得再开一个窗口,多麻烦。当然有办法,只要我们设置redis启动模式为后端启动即可。
进入src的上层目录,其中有一个redis.conf
的文件,顾名思义,就是redis的配置文件:
wxs@ubuntu:/usr/local/redis/src$ cd ..
wxs@ubuntu:/usr/local/redis$ ls
00-RELEASENOTES COPYING Makefile redis.conf runtest-sentinel tests
BUGS deps MANIFESTO runtest sentinel.conf utils
CONTRIBUTING INSTALL README.md runtest-cluster src
编辑redis.conf
,将daemonize
的值修改为yes,如图所示:
保存修改,此时重新运行redis,注意此时运行时要加上配置文件这个参数(如果不加其实使用了默认的配置文件)
最后一行提示我们配置已经载入,而且也没有弹出之前的类似于面包图,我们查看下进程,redis的确已经在后台启动了。
wxs@ubuntu:/usr/local/redis/src$ ps auxc | grep redis
wxs 15243 0.1 0.4 51828 8380 ? Ssl 00:24 0:00 redis-server
想要操纵数据依然运行redis-cli
即可。
1.6 退出Redis
如何退出Redis呢,我们可以粗暴的退出,即直接用kill命令将该进程杀死,这种方法十分粗暴,会导致redis持久化的数据丢失,不建议使用。
wxs@ubuntu:/usr/local/redis/src$ ps auxc | grep redis
wxs 15243 0.1 0.4 51828 8380 ? Ssl 00:24 0:00 redis-server
wxs@ubuntu:/usr/local/redis/src$ sudo kill -9 15243
另外一种方法就是向Redis发送关闭命令,即redis-cli shutdown
即可。
wxs@ubuntu:/usr/local/redis/src$ ps auxc | grep redis
wxs 15243 0.1 0.4 51828 8380 ? Ssl 00:24 0:00 redis-server
wxs@ubuntu:/usr/local/redis/src$ ./redis-cli shutdown
(error) ERR Errors trying to SHUTDOWN. Check logs.
我这里出现了错误,是因为我的配置文件没有配置完全的原因,如果你和我一样出现了错误,那么修改配置文件:
wxs@ubuntu:/usr/local/redis/src$ sudo vim ../redis.conf
修改配置文件中的logfile
和dir
这两项为自定义路径(dir
项参数是一个文件夹,因此结尾必修要有/),如下图:
对于其中不存在的文件和路径,都要创建,并且赋予777权限:
wxs@ubuntu:/usr/local/redis/src$ sudo touch ../redis_log.log
wxs@ubuntu:/usr/local/redis/src$ sudo chmod 777 ../redis_log.log
wxs@ubuntu:/usr/local/redis/src$ sudo mkdir ../redis_dbfile
wxs@ubuntu:/usr/local/redis/src$ sudo chmod 777 ../redis_dbfile
因为配置文件没有配好,没法正常关闭,因此只能先强杀进程:
wxs@ubuntu:/usr/local/redis/src$ ps auxc | grep rediswxs 15243 0.1 0.4 51828 8380 ? Ssl 00:24 0:01 redis-server
wxs@ubuntu:/usr/local/redis/src$ sudo kill -9 15243
重新启动redis,此时就能够正常关闭了,如果还是报错误,打开你配置的logfile
对应的路径,去查看具体的错误信息。
wxs@ubuntu:/usr/local/redis/src$ ./redis-server ../redis.conf
wxs@ubuntu:/usr/local/redis/src$ ps auxc | grep redis
wxs 15450 0.0 0.4 51828 8388 ? Ssl 00:49 0:00 redis-server
wxs@ubuntu:/usr/local/redis/src$ ./redis-cli shutdown
wxs@ubuntu:/usr/local/redis/src$ ps auxc | grep redis
wxs@ubuntu:/usr/local/redis/src$