Redis:下载安装
跳到导航
跳到搜索
下载安装
下载
- Linux:“wget http://219.238.7.66/files/502600000A29C8D5/download.redis.io/releases/redis-3.2.9.tar.gz”
- windows:“https://github.com/MSOpenTech/redis/releases”
安装
- 解压:tar -zxvf redis-3.2.9.tar.gz
- 切换目录: cd redis-3.2.9,执行命令:make
- 将 src下的可执行文件复制到/usr/local/bin 目录下,再执行 make install
配置
查看和修改Redis的配置项,有两种方式:
- 是通过配置文件查看和修改;
- “redis.conf”是 Redis 的配置文件;
- redis 默认为 16 个库(默认自动使用 0 号库);
- 是通过配置命令查看和修改。
# 查看配置 CONFIG GET <CONFIG_SETTING_NAME> # 修改配置 CONFIG SET <CONFIG_SETTING_NAME> <NEW_CONFIG_VALUE>
- 不区分字母大小写
- 支持通配符
Redis 的配置项比较多,常用项说明大致如下:(“redis.conf”文件中已有全部的配置内容和说明)
- port:端口配置项,查看和设置Redis监听端口,默认端口为 6379。
- bind:主机地址配置项,查看和绑定的主机地址,默认地址的值为 127.0.0.1。
- 这个选项,在单网卡的机器上,一般不需要修改。
- timeout:连接空闲多长要关闭连接,表示客户端闲置一段时间后,要关闭连接。
- 默认值为0,表示默认不限制连接的空闲时长。
- dbfilename:指定保存缓存数据库的本地文件名。
- 默认值为 dump.rdb。
- dir:指定保存缓存数据的本地文件所存放的目录。
- 默认值为安装目录。
- rdbcompression:指定存储至本地数据库时是否压缩数据。
- 默认为yes,Redis采用 LZF 压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变得巨大。
- save:指定在多长时间内,有多少次 Key-Value 更新操作,就将数据同步到本地数据库文件。
- save配置项的格式为“
save <seconds> <changes>
”:seconds表示时间段的长度,changes表示变化的次数。如果在seconds时间段内,变化了changes次,则将Redis缓存数据同步到文件。
- 如:设置为900秒(15分钟)内有1个更改,则同步到文件:
127.0.0.1:6379> config set save "900 1" OK 127.0.0.1:6379> config get save 1) "save" 2) "jd 900"
- 如:设置为900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改,三者满足一个条件,则同步到文件:
127.0.0.1:6379> config set save "900 1 300 10 60 10000" OK 127.0.0.1:6379> config get save 1) "save" 2) "jd 900 jd 300 jd 60"
- save配置项的格式为“
- requirepass:设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过“
AUTH <password>
”命令提供密码,默认这个选项是关闭的。 - slaveof:在主从复制的模式下,当前节点为 slave(从)节点时,此项用于设置 master(主)节点的IP地址及端口,在 Redis 启动时,它会自动从 master(主)节点进行数据同步。
- 如果已经是 slave(从)服务器,则会丢掉旧数据集,从新的master主服务器同步缓存数据。
- 设置为 slave 节点命令的格式为:“
slaveof <masterip> <masterport>
”
- masterauth:在主从复制的模式下,当 master(主)服务器节点设置了密码保护时,配置 slave(从)服务器连接 master(主)服务器所用的密码。
- master服务器节点设置密码的格式为:“
masterauth <master-password>
”
- master服务器节点设置密码的格式为:“
- databases:设置缓存数据库的数量,默认数据库数量为 16 个。这16个数据库的 id 为 0-15,默认使用的数据库是第 0 个。
- databases配置选项,可以设置多个缓存数据库,不同的数据库存放不同应用的缓存数据。
- 可以使用“
SELECT <dbid>
”命令在连接时通过数据库id来指定要使用的数据库。 - 在Java编程中,配置连接 Redis 的 uri 连接字符串时,可以指定到具体的数据库,格式为:
redis://用户名:密码@host:port/Redis库名
- 如下,表示连接到第 2 个Redis缓存库:(其中的用户名是可以随意填写的)
redis://testRedis:foobared@119.254.166.136:6379/1
启动
(切换到 redis-3.2.9/src/ 目录执行命令)
- 后台启动:“./redis-server & ”
- 后台启动并输出日志到nohup.out文件:“nohup /usr/local/redis-3.2.9/src/redis-server &”
关闭
切换到 redis-3.2.9/src/ 目录执行:“./redis-cli shutdown”
- (直接结束进程:kill pid 或者 kill -9 pid)
安全
以下都是在配置文件“redis.conf”中进行修改。
设置密码
通过以下命令查看是否设置了密码验证:
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""
- 默认情况下 requirepass 参数是空的。
可以通过两种方式设置密码:
- 配置文件:
requirepass 123456
- 命令:
127.0.0.1:6379> CONFIG set requirepass "runoob" OK
- 因为 redis 速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K 次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。
可以通过两种方式使用密码:
- 启动时:
redis-cli -h 127.0.0.1 -p 6379 -a 123456
- 连接时:
AUTH 123456
绑定ip
配置文件中:
# bind 127.0.0.1
- 取消 ip 绑定注释(去掉 #),
- 修改“127.0.0.1”为允许访问 redis 服务器的ip地址:
禁用命令、重命名命令
配置文件中:
rename-command FLUSHALL oyfekmjvmwxq5a9c8usofuo369x0it2k # 重命名FLUSHALL命令
rename-command FLUSHALL "" # 禁用FLUSHALL命令
rename-command FLUSHDB "" # 禁止FLUSHDB命令
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 # 重命名CONFIG命令
rename-command CONFIG "" # 禁止CONFIG命令
- 对于禁用“FLUSHALL”命令,需要保证“appendonly.aof”文件没有 flushall 命令,否则服务器无法启动;
修改默认端口
配置文件中:
port 6379
- 修改 redis 的端口,这一点很重要,使用默认的端口很危险;
客户端
命令行客户端
- redis-cli(Redis Command Line Interface)是Redis自带的基于命令行的Redis客户端,用于与服务端交互,我们可以使用该客户端来执行redis的各种命令。
- 直接连接redis (默认ip127.0.0.1,端口6379):“./redis-cli”
- 指定IP和端口连接redis:“./redis-cli -h 127.0.0.1 -p 6379”
远程客户端
- Redis Desktop Manager
- 官网:https://redisdesktop.com/
- 远程连接redis需要修改redis主目录下的“redis.conf”配置文件:
- “bind ip”绑定ip注释掉;
- “protected-mode yes”保护模式改为no;
- phpRedisAdmin
- (需要本地安装php运行环境)
编程客户端(Java)
使用它提供的 API 就能访问服务器上的 redis 并对它进行各种操作。(类似于数据库驱动)
- Jedis,redis的Java编程客户端,Redis官方首选推荐使用 Jedis,它是一个很小但很健全的 redis 的 java 客户端
- jedis 完全兼容redis 2.8.x and 3.x.x
- Jedis 源码:https://github.com/xetorthio/jedis
- api 文档:http://xetorthio.github.io/jedis/
- Lettuce:可伸缩线程安全的Redis客户端。多个线程可以共享同一个“RedisConnection”。它利用优秀netty NIO框架来高效地管理多个连接。
- Lettuce 源码:https://github.com/lettuce-io/lettuce-core
- redis 的其他编程语言客户端:C、C++、C#、Erlang、Lua、Objective-C、Perl、PHP、Python、Ruby、Scala、Go,等40多种语言都有连接redis的编程客户端;