Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list(列表),set(集合),zset(有序集合),hash(哈希表)等数据结构的存储。
- Redis支持数据的备份,即master-slave(主从模式)模式的数据备份。
Redis 优势:
- 性能极高 – Redis的读取速度是110000次/s,写入速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的。意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
- 丰富的特性 – Redis还支持 publish/subscribe(发布-订阅模式), 通知, key 过期等等特性。
下载安装
进入
/usr/local
目录$ cd /usr/local
离线下载
https://redis.io/download
在线下载
$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
解压
$ tar xzf redis-5.0.5.tar.gz
安装gcc
由于redis通过源码安装,依赖gcc编译器,首先确认其机器gcc版本,保证其gcc版本在4.2以上,我这里为4.8故直接跳过该步:
$ gcc –v gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
# 安装命令 $ yum install gcc
redis安装
$ cd redis-5.0.5 # 编译安装 $ make MALLOC=libc # 编译测试 $ make test
若编译测试出现问题,则直接安装肯定也不通过,可能会出现如下异常
[root@iz2zehvxttbua2f45dp7ihz redis-5.0.5]# make test cd src && make test make[1]: Entering directory `/usr/local/redis/redis-5.0.5/src' CC Makefile.dep make[1]: Leaving directory `/usr/local/redis/redis-5.0.5/src' make[1]: Entering directory `/usr/local/redis/redis-5.0.5/src' You need tcl 8.5 or newer in order to run the Redis test make[1]: *** [test] Error 1 make[1]: Leaving directory `/usr/local/redis/redis-5.0.5/src' make: *** [test] Error 2
上面异常信息说需要tcl包提供支持,所以我们接着安装tcl包
# 安装tcl包 $ yum install tcl
安装完成后再次执行
make test
,直到输出成功为止将
/usr/local/redis-5.0.5/src
目录下的文件加到/usr/local/bin
目录$ cd src && make install
启动redis服务
$ ./redis-server
该启动方式会随着控制台的退出而关闭,所以我们需要将该服务已后台启动的方式启动
配置为后台服务
修改
redis.conf
文件$ vim redis.conf 将 daemonize no 改为 daemonize yes
将
redis.conf
复制到/etc/redis
目录下,并改名为6379.conf
$ cd /etc $ mkdir redis $ cd redis $ cp /usr/local/redis/redis-5.0.5/redis.conf 6379.conf # 该文件为稍后安装的后台服务使用的配置文件
复制启动脚本到
/etc/rc.d/init.d/
,并改名为redisd
# 启动脚本在/redis-5.0.5/utils目录下 $ cp -f /usr/local/redis/redis-5.0.5/utils/redis_init_script /etc/rc.d/init.d/redisd
修改复制后的
redisd
文件,使之能成为服务$ cd /etc/rc.d/init.d/ $ vim redisd
在脚本的第一行后面添加一行内容,如下
新版本应该不用加了 #chkconfig:2345 80 90
修改EXEC、CLIEXEC的路径
# 原内容 EXEC=/usr/local/bin/redis-server CLIEXEC=/usr/local/bin/redis-cli # 修改后的内容 EXEC=/usr/local/redis/redis-5.0.5/src/redis-server CLIEXEC=/usr/local/redis/redis-5.0.5/src/redis-cli
- 在$EXEC $CONF后面加上 &
添加开机启动
$ chkconfig redisd on
启动服务
# 你要将6379端口添加到防火墙中 $ firewall-cmd --zone=public --add-port=6379/tcp --permanent #重新加载 $ firewall-cmd --reload $ service redisd start Starting Redis server... 16842:C 13 Jul 2019 23:24:46.881 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 16842:C 13 Jul 2019 23:24:46.881 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=16842, just started 16842:C 13 Jul 2019 23:24:46.881 # Configuration loaded
# 退出控制台,redis也不会关闭了 # 停止服务 $ service redisd stop
修改密码
$ vim /etc/redis/6379.conf # 将requirepass的注释放开,并更改密码,保存退出 requirepass hosredis
支持外部宿主机远程连接
停止redis服务
$ service redisd stop
如果停止不了,则可以强杀进程和删除pid
# 查看进程信息 $ ps -ef | grep redis root 14603 1 0 15:09 ? 00:00:00 /usr/local/redis-5.0.5/src/redis-server # 强制杀进程 kill -9 进程id $ kill -9 14603
修改
/etc/redis/6379.conf
$ vim /etc/redis/6379.conf # 将bind的值由127.0.0.1改为0.0.0.0 bind 0.0.0.0
重启服务
$ service redisd start
- 外部再次尝试连接
redis-cli
工具使用redis-cli
工具是redis提供的命令工具,常用命令如下$ redis-cli 如果有密码,则需要auth认证 127.0.0.1:6379> auth hosredis OK 127.0.0.1:6379> set efg 456 OK 127.0.0.1:6379> get efg "456" 127.0.0.1:6379> exit