redis简介
Redis是一款开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存也可持久化的日志型、Key-Value高性能数据库。Redis与其他Key-Value缓存产品相比有以下三个特点:
支持数据持久化,可以将内存中的数据保存在磁盘中,重启可再次加载使用
支持简单的Key-Value类型的数据,同时还提供List、Set、Zset、Hash等数据结构的存储
支持数据的备份,即Master-Slave模式的数据备份
同时,我们再看下Redis有什么优势:
读速度为110000次/s,写速度为81000次/s,性能极高
具有丰富的数据类型,这个上面已经提过了
Redis所有操作都是原子的,意思是要么成功执行要么失败完全不执行,多个操作也支持事务
丰富的特性,比如Redis支持publish/subscribe、notify、key过期等
安装启动
下载Redis,wget http://download.redis.io/releases/redis-3.2.11.tar.gz,可以看到LZ使用的Redis版本是3.2.11,在LZ写这篇文章的时候,Redis最新版本为4.0.9,地址为http://download.redis.io/releases/redis-4.0.9.tar.gz,感兴趣的朋友也可以用这个版本
解压下载下来的tar包,tar -zxvf redis-3.2.11.tar.gz,解压完毕的文件夹名称为redis-3.2.11
进入redis-3.2.11,cd redis-3.2.11
由于我们下载下来的是源文件,因此使用make命令对源文件进行一个构建,构建完毕我们会发现src目录下多出了redis-benchmark、redis-check-aof、redis-check-rdb、redis-cli、redis-sentinel、redis-server几个可执行文件,这几个可执行文件后面会说到
由于上述几个命令在/data/component/redis/redis-3.2.11/src目录下,为了更方便地使用这几个命令而不需要指定全路径,配置一下环境变量。这里我是以非root用户进行登录的,因此配置用户变量,先执行cd命令回到初始目录,再vi ./.bash_profile,在path这行加入PATH:PATH:HOME/.local/bin:$HOME/bin:/data/component/redis/redis-3.2.11/src,使用:wq保存并退出
使环境变量生效,执行source ./.bash_profile
使用redis-server即可启动redis,redis-server /data/component/redis/redis-3.2.11/redis.conf
不过这个时候我们的启动稍微有点问题,不是后台启动的,即ctrl+c之后Redis就停了:为了解决这个问题,我们需要修改一下redis.conf,将Redis设置为以守护进程的方式进行启动,打开redis.conf,找到daemonize,将其设置为yes即可:这个时候先关闭一下再启动,Redis就在后台自动运行了,关闭Redis有两种方式:
redis-cli shutdown,这是种安全关闭redis的方式,但这种写法只适用于没有配置密码的场景,比较不安全,配置密码下一部分会讲
kill -9 pid,这种方式就是强制关闭,可能会造成数据未保存
重启后,我们可以使用ps -ef | grep redis,netstat -ant | grep 6379命令来验证Redis已经启动。
Redis登录授权
上面我们安装了Redis,但这种方式是非常不安全的,因为没有密码,这样任何连接上Redis服务器的用户都可以对Redis执行操作,所以这一部分我们来讲一下给Redis设置密码。
打开redis.conf,找到"requirepass"部分,打开原本关闭的注释,替换一下自己想要的密码即可:重启Redis,授权登录有两种做法:
连接的时候直接指定密码,redis-cli -h 127.0.0.1 -p 6379 -a 123456
连接后授权,redis-cli -h 127.0.0.1 -p 6379,auth 123456
在配置了密码的情况下,没有进行授权,那么对Redis发送的命令,将返回"(error) NOAUTH Authentication required."。
Redis配置文件redis.conf
上面两小节,设置使用守护线程启动、设置密码,都需要修改redis.conf,说明redis.conf是Redis核心的配置文件,本小节我们来看一下redis.conf中一些常用配置