Redis 学习笔记一

一、redis 安装

1.1、安装环境

1Linux centos 系统

2、安装gcc环境,一般情况linux 系统自带该环境,也可自行下载安装使用新版本;环境检测如下:

命令:gcc -v

1.2、安装redis

     1、下载redis linux 下安装包,选择合适的安装包,这里使用redis-5.0.5.tar.gz

官网:https://redis.io/download 

2、解压软件包,如下:

  tar -zxvf redis-5.0.5.tar.gz

3、编译,进入redis 解压目录,输入编译命令,如下:

   make 

 4、安装redis ,并指定安装路径 

 5、查看redis安装路径文件结构

 7、复制redis 默认配置文件到安装目录下,如下图:

   cp /opt/redis/redis-5.0.5/redis.conf  /opt/redis/install/ 

二、redis 基本命令

2.1redis 相关命令

  1redis 启动,命令:./bin/redis-server  redis.conf 

2、查询redis 进程,命令:ps -ef|grep redis

 3、连接redis 服务

本地连接命令:./bin/redis-cli 

远程连接命令:./bin/redis-cli  -h 主机ip地址  -p  端口  -a  密码

如: ./bin/redis-cli -h 192.168.137.5 -p 6379 -a abc123 

 4、windows客户端连接 

可以下载windows客户端RedisClient连接redis ,如: ,安装后运行,并配置redis服务器地址,账号,则可登录redis :

5、关闭redis服务

A、查询redis服务进程号,通过kill 命令闭关服务 

  B.使用redis 命令关闭redis 

 

 三、redis 配置文件

3.1redis.conf 文件配置

  1bind 指令:绑定IP地址,默认是127.0.0.1,设置绑定 IP ,默认是本机,绑定服务器地址后,方便访问,示例:bind 192.168.137.5

  2protected-mode 指令: 保护模式,默认启用,需要配置绑定ip ,外网才能访问,否则本机使,设为no,则不需要绑定ip ,外网也可以访问,示例:protected-mode yes

  3port 指令: 指定redis 运行端口号,示例:port 6379

  4daemonize 指令: 是否使用守护进程 默认为no ,yes 为开启,开启后,会将进程号写入一个pid文件,示例:daemonize yes

  5databases 指令:配置16个数据库,0开始,0-15 ,可以选择一个连接,示例:databases 16

  6requirepass 指令:设置redis 连接密码 , 默认关闭,示例:requirepass abc123

  7maxclients 指令:客户端最大连接数,示例:maxclients 10000

  8tcp-backlog 指令:TCP连接中已完成队列(完成三次握手之后)的长度,默认值:511,当系统并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定,示例:tcp-backlog 511

  9timeout 指令:此参数为设置客户端空闲超过timeout,服务端会断开连接,为0则服务端不会主动断开连接,不能小于0。 单位秒,示例:timeout 180

  10tcp-keepalive 指令:keepalive参数。如果设置不为0,就使用配置tcpSO_KEEPALIVE值,使用keepalive有两个好处:检测挂掉的对端。降低中间设备出问题而导致网络看似连接却已经与对端端口的问题。在Linux内核中,设置了keepaliveredis会定时给对端发送ack。检测到对端关闭需要两倍的设置值 ,默认值300,单位秒,示例:tcp-keepalive 300

  11pidfile 指令:redis进程号文件,示例:pidfile /var/run/redis_6379.pid

  12loglevel 指令:指定了服务端日志的级别。级别包括:

debug(很多信息,方便开发、测试),

verbose(许多有用的信息,但是没有debug级别信息多),

notice(适当的日志级别,适合生产环境),

warn(只有非常重要的信息)

13、logfile 指令:指定了记录日志的文件。空字符串的话,日志会打印到标准输出设备。后台运行的redis标准输出是/dev/null。示例:logfile /logs/redis/redis-server.log

14、always-show-logo 指令:显示logo,示例:always-show-logo yes

15、Save 指令:快照配置,每seconds 秒有changes 次数据更改,就将数据持久化到磁盘,如下:

save 900 1

save 300 10

save 60 10000

16、rdbcompression 指令:指定数据存储到本地时,是否压缩,默认打开,会消息CPU资源,但关闭也会导致文件过大,示例:rdbcompression yes

17、Dbfilename 指令:指定本地数据库文件

18、dir 指令:数据库文件存放目录,默认为redis 当前安装目录

19、Masterauth 指令:主从认证密码,示例:masterauth abc123

20、Maxmemory  指令:redis 最大内存,单位为字节 ,设置值不能超过系统内存,根据内存不小设置,示例:maxmemory 1000000000

21、maxmemory-policy 指令:设置内存策略,默认是不删除数据,策略选择如下:

# 以下是LRU 内存溢出处理机制

# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory

# is reached. You can select among five behaviors:

# 设定超时时间的key,删除最不常用的key

# volatile-lru -> Evict using approximated LRU among the keys with an expire set.

# 所有key 中,删除最不常用的key ,这是最广泛使用的策略

# allkeys-lru -> Evict any key using approximated LRU.

# 从所有配置超时时间key中,驱遂使用最少的键

# volatile-lfu -> Evict using approximated LFU among the keys with an expire set.

# 所有key中,使用驱遂最少的键

# allkeys-lfu -> Evict any key using approximated LFU.

# 已设定超时时间key 中,随机删除

# volatile-random -> Remove a random key among the ones with an expire set.

# 所有key 中,随机删除

# allkeys-random -> Remove a random key, any key.

# 将所有设置超时时间的key排序,删除马上超时的key

# volatile-ttl -> Remove the key with the nearest expire time (minor TTL)

# 设置属性,则不会删除,溢出时,直接报错

# noeviction -> Don't evict anything, just return an error on write operations.

      示例:maxmemory-policy allkeys-lru

22、slaveof 指令:配置从redis 指向主redis ,示例:slaveof 192.168.3.5 6379

3.2sentinel.conf 配置文件

  1sentinel monitor指令:哨兵监控,选择新的主redis需要几个哨兵投票,配置基数个哨兵,否则可能出现循环;

格式:sentinel monitor <master-name> <ip> <redis-port> <quorum>

示例:sentinel monitor mymaster 192.168.137.5 6379 2

2、sentinel auth-pass 指令:如果redis配置了密码,那这里必须配置认证,否则不能自动切换;

  格式:sentinel auth-pass <master-name> <password>

  示例:sentinel auth-pass mymaster abc123

3、sentinel down-after-milliseconds指令:master或者slave多少时间(默认30秒)不能使用标记为down状态。

   格式:sentinel down-after-milliseconds <master-name> <milliseconds>

   示例:sentinel down-after-milliseconds mymaster 10000

4、sentinel parallel-syncs 指令:这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行同步,这个数字越小,完成failover所需的时间就越长, 但是如果这个数字越大,就意味着越多的slave因为replication而不可用。可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态

   格式:sentinel parallel-syncs <master-name> <numreplicas>

   示例:sentinel parallel-syncs mymaster 1

5、sentinel failover-timeout 指令:若哨兵在配置值内未能完成故障转移操作,则任务本次故障转移失败。

   格式:sentinel failover-timeout <master-name> <milliseconds>

   示例:sentinel failover-timeout mymaster 180000

四、redis 主从配置

4.1、配置主redis服务器

打开redis配置文件,配置基本参数,特别需要配置主从密码,相关参考三中指命令;6379为主,6380为从;

Masterauth abc123

Slaveof 192.168.137.4 6379

 登录主服务器,查看redis信息:命令:info Replication 

 4.2、登录主服务器

使用命令将值存入主redis中,再查看从服务器是否有值,如下:

        用客户端登录从服务器查看,值已存在,主从成功复制数据 

 

 

  默认情况下,从redis是不能存入数据的,配置slave-read-only no 

五、redis 哨兵模式配置

5.1、配置一主二从redis服务器

  参考四中配置,如图:

 登录查看信息:

5.2、配置哨兵

bind 192.168.137.5

port 26379

daemonize yes

sentinel monitor mymaster 192.168.137.5 6379 2

sentinel auth-pass mymaster abc123

sentinel down-after-milliseconds mymaster 10000

sentinel parallel-syncs mymaster 1

sentinel failover-timeout mymaster 180000

运行哨兵:

./bin/redis-sentinel ./sentinel.conf

./bin/redis-sentinel ./sentinel.conf  --port 26380

./bin/redis-sentinel ./sentinel.conf --port 26381

查看进程:

登录哨兵查看信息:

./bin/redis-cli -h 192.168.137.4 -p 6379 -a abc1234 

 5.3spring boot 配置哨兵模式连接

   如下:

   # spring boot 整合redis配置

spring:

  redis:

    host: 192.168.137.5

    port: 6379

    password: abc123

    database: 1

    timeout: 110000

    jedis:

      pool:

        # 连接池最大连接数(使用负值表示没有限制

        max-active: 1024

        #  连接池最大阻塞等待时间(使用负值表示没有限制)

        max-wait: 10000

        # 连接池中的最大空闲连接

        max-idle: 200

        # 连接池中的最小空闲连接

        min-idle: 10

    #哨兵配置

    sentinel:

      master: mymaster

      nodes:

        - 192.168.137.5:26379

        - 192.168.137.5:26380

        - 192.168.137.5:26381

六、redis 集群搭建

6.1、自动搭建redis集群环境

     1、环境配置,在之前配置下,需要安装ruby环境

     2ruby环境安装

        1)、官方下载ruby安装包,http://www.ruby-lang.org/en/downloads/

        2)、解压安装ruby

            解压:tar -zxvf ruby-2.7.0.tar.gz

            配置:

             ./configure --prefix=/opt/ruby/install/ --with-openssl-dir=/opt/openssl/openssl-1.0.2j

            编译:make

            安装:make install

            查看安装版本:./bin/ruby -v 

 3)、配置环境

         输入命令vi /etc/profile,在文件当中PATH当中加入安装Rubybin目录路径。然后保存执行命令:source /etc/profile

3、配置redis三主三从,共6redis ,配置文件如下:

bind 192.168.137.4                    # 设置当前节点主机地址

port 7002                             # 设置客户端连接监听端口

pidfile /opt/reddis/install/cluster/7002/redis_7002.pid # 设置 Redis 实例 pid 文件

daemonize yes                          # 以守护进程运行 Redis 实例

cluster-enabled yes                    # 启用集群模式

cluster-node-timeout 15000             # 设置当前节点连接超时毫秒数

cluster-config-file nodes-7001.conf    # 设置当前节点集群配置文件路径

修改IP与端口,形成6台机器 

6.2、使用自动工具搭建集群

   1、使用redis-cli --cluster create 命令直接搭建,如下:

    ./bin/redis-cli --cluster create 192.168.137.4:7001 192.168.137.4:7002 192.168.137.4:7003 192.168.137.4:8001 192.168.137.4:8002 192.168.137.4:8003 --cluster-replicas 1

 

 登录节点查看集群信息:./bin/redis-cli -c -h 192.168.137.4 -p 7001

输入:cluster info 

 查看集群节点:cluster nodes 

 查看集群命令帮助:cluster help 

 2、集群相关命令

修复分配槽问题:

./bin/redis-cli --cluster fix 192.168.137.4:7001

检测集群槽分配情况:

 ./bin/redis-cli --cluster check 192.168.137.4:7002

重新分配:

./bin/redis-cli --cluster reshard 192.168.137.4:7001 

查看帮助:./bin/redis-cli --cluster help  

 6.3springboot  配置集群redis 访问

# spring boot 整合redis配置
spring:
  redis:
    cluster:
      nodes:
        - 192.168.137.4:7001
        - 192.168.137.4:7002
        - 192.168.137.4:7003

七、redis相关命令

    参考redis官网:http://www.redis.cn/

posted @ 2020-05-10 17:55  静悦  阅读(220)  评论(0编辑  收藏  举报