下载redis的最新版
wget http://download.redis.io/releases/redis-6.0.3.tar.gz
解压并编译
tar -zxvf redis-6.0.3.tar.gz cd redis-6.0.3 make
修改配置文件
bind 127.0.0.1 port 6666 daemonize yes dir /data/redis6/ pidfile /data/redis6/redis_6666.pid logfile "/data/redis6/redis_6666.log"
启动
./redis-server redis.conf
查看
[root@mini redis6]# netstat -tunlp | grep 6666 tcp 0 0 127.0.0.1:6666 0.0.0.0:* LISTEN 26690/./redis-serve
客户端查看
./redis-cli -p 666 --raw 127.0.0.1:6666> auth 123456 OK 127.0.0.1:6666> set a 1 OK 127.0.0.1:6666> SAVE OK 127.0.0.1:6666> exit [root@mini redis6]# ll total 57104 -rw-r--r-- 1 root root 102 May 21 02:46 dump.rdb
Redis 6 会给大家提供的新功能
一、对用户使用有直接影响的功能
- ACL用户权限控制功能
- RESP3:新的 Redis 通信协议
- Cluster 管理工具
- SSL 支持
二、Redis 内部的优化
- IO多线程支持
- 新的Module API
- 新的 Expire 算法
三、外部工具
- Redis Cluster Proxy
- Disque
ACL
目前的 Redis(5及以下版本),没有用户权限管理这个概念,只有一个AUTH
密码验证功能,基本上能够接入的用户就是root
用户。
ACL 就是为了避免接入的用户进行危险命令的操作开发的功能,这类命令如 FLUSHALL
,DEBUG
等。
多年来 Redis 管理员通过RENAME
命令来进行限制。另一方面,开发人员有时候不清楚一些Redis 驱动的内部实现,可能无意中触发一些危险命令,所以也需要进行限制。
Redis 6 中加入ACL的功能,能够对接入的用户进行三个层面的权限控制:
(1)接入权限:用户名和密码;
(2)可以执行的命令;
(3)可以操作的 KEY。
127.0.0.1:6666> ACL WHOAMI default 127.0.0.1:6666> ACL setuser abcd on >mypasswd +@all ~* OK 127.0.0.1:6666> ACL WHOAMI default 127.0.0.1:6666> AUTH abcd mypasswd OK 127.0.0.1:6666> ACL WHOAMI abcd 127.0.0.1:6666> get a 1 127.0.0.1:6666> set a 2 OK
然后我尝试将 abcd 这个用户去掉SET
命令的权限。
127.0.0.1:6666> ACL setuser abcd -SET OK 127.0.0.1:6666> set a 2 NOPERM this user has no permissions to run the ‘set‘ command or its subcommand 127.0.0.1:6666> get a 2
RESP3
RESP 全称 REdis Serialization Protocol,是 Redis 服务端与客户端之间通信的协议。Redis 5 使用的是 RESP2,而 Redis 6 开始在兼容 RESP2 的基础上,开始支持 RESP3。
那么 RESP3 有哪些改进的地方呢?
127.0.0.1:6666> HSET hash1 a 1 b 2 c 3 3 127.0.0.1:6666> HGETALL hash1 a 1 b 2 c 3 127.0.0.1:6666> HELLO 3 server redis version 6.0.3 proto 3 id 5 mode standalone role master modules 127.0.0.1:6666> HGETALL hash1 a 1 b 2 c 3