Redis:下载安装

来自Wikioe
跳到导航 跳到搜索


下载安装

下载

官网:“https://redis.io/”

  1. Linux:“wget http://219.238.7.66/files/502600000A29C8D5/download.redis.io/releases/redis-3.2.9.tar.gz”
  2. windows:“https://github.com/MSOpenTech/redis/releases”

安装

  1. 解压:tar -zxvf redis-3.2.9.tar.gz
  2. 切换目录: cd redis-3.2.9,执行命令:make
  3. 将 src下的可执行文件复制到/usr/local/bin 目录下,再执行 make install

配置

查看和修改Redis的配置项,有两种方式:

  1. 是通过配置文件查看和修改;
    • redis.conf”是 Redis 的配置文件;
    • redis 默认为 16 个库(默认自动使用 0 号库);
  2. 是通过配置命令查看和修改。
    # 查看配置
    CONFIG GET <CONFIG_SETTING_NAME>
    # 修改配置
    CONFIG SET <CONFIG_SETTING_NAME> <NEW_CONFIG_VALUE>
    
    • 不区分字母大小写
    • 支持通配符


Redis 的配置项比较多,常用项说明大致如下:(“redis.conf”文件中已有全部的配置内容和说明)

  1. port:端口配置项,查看和设置Redis监听端口,默认端口为 6379
  2. bind:主机地址配置项,查看和绑定的主机地址,默认地址的值为 127.0.0.1。
    • 这个选项,在单网卡的机器上,一般不需要修改。
  3. timeout:连接空闲多长要关闭连接,表示客户端闲置一段时间后,要关闭连接。
    • 默认值为0,表示默认不限制连接的空闲时长。
  4. dbfilename:指定保存缓存数据库的本地文件名。
    • 默认值为 dump.rdb
  5. dir:指定保存缓存数据的本地文件所存放的目录。
    • 默认值为安装目录。
  6. rdbcompression:指定存储至本地数据库时是否压缩数据。
    • 默认为yes,Redis采用 LZF 压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变得巨大。
  7. 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"
    
  8. requirepass:设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过“AUTH <password>”命令提供密码,默认这个选项是关闭的。
  9. slaveof:在主从复制的模式下,当前节点为 slave(从)节点时,此项用于设置 master(主)节点的IP地址及端口,在 Redis 启动时,它会自动从 master(主)节点进行数据同步。
    • 如果已经是 slave(从)服务器,则会丢掉旧数据集,从新的master主服务器同步缓存数据。
    • 设置为 slave 节点命令的格式为:“slaveof <masterip> <masterport>
  10. masterauth:在主从复制的模式下,当 master(主)服务器节点设置了密码保护时,配置 slave(从)服务器连接 master(主)服务器所用的密码。
    • master服务器节点设置密码的格式为:“masterauth <master-password>
  11. 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 参数是空的。


可以通过两种方式设置密码:

  1. 配置文件:
    requirepass 123456
    
  2. 命令:
    127.0.0.1:6379> CONFIG set requirepass "runoob"
    OK
    
  • 因为 redis 速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K 次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。


可以通过两种方式使用密码:

  1. 启动时:
    redis-cli -h 127.0.0.1 -p 6379 -a 123456
    
  2. 连接时:
    AUTH 123456
    

绑定ip

配置文件中:

# bind 127.0.0.1
  1. 取消 ip 绑定注释(去掉 #),
  2. 修改“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 的端口,这一点很重要,使用默认的端口很危险;

客户端

命令行客户端

  1. 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”

远程客户端

  1. Redis Desktop Manager
    • 官网:https://redisdesktop.com/
    • 远程连接redis需要修改redis主目录下的“redis.conf”配置文件:
      1. “bind ip”绑定ip注释掉;
      2. “protected-mode yes”保护模式改为no;
  2. phpRedisAdmin
    • (需要本地安装php运行环境)

编程客户端(Java)

使用它提供的 API 就能访问服务器上的 redis 并对它进行各种操作。(类似于数据库驱动)

  1. Jedis,redis的Java编程客户端,Redis官方首选推荐使用 Jedis,它是一个很小但很健全的 redis 的 java 客户端
  2. Lettuce:可伸缩线程安全的Redis客户端。多个线程可以共享同一个“RedisConnection”。它利用优秀netty NIO框架来高效地管理多个连接。
  • redis 的其他编程语言客户端:C、C++、C#、Erlang、Lua、Objective-C、Perl、PHP、Python、Ruby、Scala、Go,等40多种语言都有连接redis的编程客户端;