1. 配置Redis服务

部署Redis服务

部署Redis服务

  • Redis介绍

    Redis
      - Remote Dictionary Server(远程字典服务器)
      - 是一款高性能的(Key/Values)分布式内存数据库
      - 支持数据持久化(定期把内存里数据存储到硬盘)
      - 支持多种数据类型string、list、hash ....
      - 支持master-salve模式数据备份
    
    中文网站: www.redis.cn
    
    
  • 安装软件

    # ruby-devel R语言环境,Redis安装需要
    
    [root@node1 ~]# ls
    redis-4.0.8.tar.gz
    
    # Redis已经一天生成了configure文件,只需要执行安装即可
    
    # 源码编译安装
    [root@node1 ~]# rpm -q gcc || yum -y install gcc
    [root@node1 ~]# tar -xf redis-4.0.8.tar.gz
    [root@node1 ~]# cd redis-4.0.8/
    [root@node1 redis-4.0.8]# make && make install
    
  • 初始配置

    # 查看初始化信息
    [root@node1 redis-4.0.8]#vim ./utils/install_server.sh
    
    [root@node1 redis-4.0.8]# ./utils/install_server.sh			# 使用默认配置一路回车即可
    Port           : 6379							# 端口
    Config file    : /etc/redis/6379.conf			# 主配置文件
    Log file       : /var/log/redis_6379.log		# 日志文件
    Data dir       : /var/lib/redis/6379			# 数据库目录
    Executable     : /usr/local/bin/redis-server	# 服务启动程序
    Cli Executable : /usr/local/bin/redis-cli		# 命令行连接命令
    
    [root@node1 ~]# ls /usr/local/bin/		# 源码安装后相关命令存放在该路径下
    redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server
    
    
  • 管理服务

    [root@node1 ~]# /etc/init.d/redis_6379 stop			# 停止服务
    
    [root@node1 ~]# /etc/init.d/redis_6379 start		# 启动服务
    
    [root@node1 ~]# ps -C redis-server			# 查看进程
    
    [root@node1 ~]# ss -ntulp | grep :6379		# 查看端口
    
    
  • 连接服务

    [root@node1 ~]# redis-cli 		# 默认连接6379端口
    127.0.0.1:6379> 
    
    127.0.0.1:6379> exit
    [root@node1 ~]# 
    
  • 常用命令

    - set key名 key值			# 存储1个key值
    - mset key名列表		    # 存储多个key值
    - get key名				 # 获取key值 
    - mget					  # 获取多个key值
    - select 数据库编号0-15	   # 切换库(0-15 共16个库)
    - exists key名			  # 测试key名是否存在
    - ttl key名				  # 查看key生存时间
    - type key名				  # 查看key类型
    
    - keys *				  # 显示所有key名 ( * 代表无限)
    - keys a?				  # 显示指定key名 (一个问号代表一个字符)
    
    - move key名 库编号			# 移动key到指定库
    - expire key名 数字		# 设置key(已存在)的有效时间(秒)
    
    - del key名	    # 删除指定的key
    - flushall		# 删除内存里所有的key(所有库)
    - flushdb		# 删除所在库的所有key
    
    - save			# 保存所有key到硬盘
    - shutdown		# 停止服务 与 redis_6379脚本的停止相同 (定制服务时,会把所有数据写入文件) 
    
    127.0.0.1:6379> ping			# 测试是否连接 PONG为正常
    PONG
    
    127.0.0.1:6379> set name nayue	# 存值 set key value [EX seconds] [PX milliseconds] [NX|XX]
    
    127.0.0.1:6379> get name		# 取值 get key
    "nayue"
    
    127.0.0.1:6379> mset name zhangsan age 18 addr shanghai		# 存多个值 mset key value [key value...]
    
    127.0.0.1:6379> get s			# 取不存在的值会返回"(nil)"
    (nil)
    
    127.0.0.1:6379> keys *			# 列出所有的key 
    1) "age"
    2) "addr"
    3) "name"
    
    127.0.0.1:6379> ttl name	# 查看变量的过期时间 返回结果"-1"表示用不过期
    (integer) -1
    
    127.0.0.1:6379> keys na* | keys na*? | keys na??	# 通配符 "*" 和 "?" "*"匹配所有 "?"匹配一个
    1) "name"
    
    127.0.0.1:6379> select 10		# 切换库,默认在零号库里,零号库不显示库编号
    OK
    127.0.0.1:6379[10]> 
    
    127.0.0.1:6379> expire name 30	# 设置key的有效时间(秒)
    (integer) 1
    127.0.0.1:6379> ttl name
    (integer) 27
    127.0.0.1:6379> ttl name		# 返回值为-2时,则被Redis删除
    (integer) -2
    
    • 练习下列命令

      - set mset get mget keys type
      - exists ttl expire move select
      - del flushdb slushall save shutdown
      

配置Redis服务

配置文件解析

  • 配置文件

    • 主配置文件

      Redis的主配置文件由多个"#"分割成了多个模块(区域),我们可以直接切换到相关区域,直接进行配置
      [root@node1 ~]# grep "##" /etc/redis/6379.conf
      INCLUDES 
      MODULES 
      NETWORK 		# 网络
      GENERAL 		# 常规
      SNAPSHOTTING  	# 快照
      REPLICATION 	# 复制
      SECURITY 		# 安全
      CLIENTS 		# 客户端
      MEMORY MANAGEMENT 	# 内存管理
      LAZY FREEING 
      APPEND ONLY MODE 
      LUA SCRIPTING  
      REDIS CLUSTER  
      CLUSTER DOCKER/NAT support  
      SLOW LOG 
      LATENCY MONITOR 
      EVENT NOTIFICATION 
      ADVANCED CONFIG 
      ACTIVE DEFRAGMENTATION 
      
  • 常用配置

    [root@node1 ~]# vim /etc/redis/6379.conf
      - port 6379		# 端口
      - bind 127.0.0.1	# IP地址
      - daemonize yes	# 以守护进程方式运行
      - databases 16	# 数据库个数
      - logfile /var/log/redis_6379.log		# 日志文件
      - maxclients 10000			# 并发连接数量(默认就是10000)
      - dir /var/lib/redis/6379		# 数据库目录
    
    # 守护进程:软件一直在后台等待着客户端链接
    # 非守护进程: 程序休眠,有客户端来访问,再由另一个程序唤醒
    
    
  • 内存管理

    • 内存清除策略

      volatile-lru		# 最近最少使用(针对设置了TTL的key)
      allkeys-lru			# 删除最少使用的key(针对所有的key)
      allkeys-lfu			# 从所有key中清除使用频率最少的key
      volatile-lfu		# 从所有配置了过期时间的key中清除使用频率最少的key
      volatile-random		# 在设置了TTL的key中随机删除
      allkeys-random		# 随机删除key
      volatile-ttl(minor TTL)		# 删除最近过期的key
      noeviction			# 不删除,写满时报错
      
      
    • 内存相关配置

      maxmemory 				# 最大内存 默认计算机剩余空闲空间(空闲多少用多少)
      maxmemory-policy 		# 定义使用策略 默认不删除(noeviction)
      maxmemory-samples 		# 删除选取key模板的个数 针对lru和ttl策略
      
      
      
      

修改配置

  • 设置连接密码、端口、IP地址

    redis服务默认开启于"127.0.0.1"网卡上,因此不能对外连接,我们需要修改它的监听地址,为了安全,需要加上验证
    
    [root@node1 ~]# /etc/init.d/redis_6379 stop
    [root@node1 ~]# vim /etc/redis/6379.conf
    port 6300
    bind 192.168.4.11
    requirepass 123456		# 密码验证
    [root@node1 ~]# /etc/init.d/redis_6379 start
    
    注意: 修改配置文件之后,将不能使用redis脚本去停止redis服务,需要提前关闭redis服务,修改配置之后,再重新启动redis
      如果忘记了,可以通过下列命令停止redis
          - redis-cli [-h IP地址] [-p 端口地址] [-a 密码] shutdown
          - redis-cli -h 192.168.4.11 -p 6300 -a 123456 shutdown
    
  • 连接redis的两种方式

    # 方式一: 连接的同时登录
    [root@node1 ~]# redis-cli -h 192.168.4.11 -p 6300 -a 123456
    192.168.4.11:6300> ping
    PONG
    
    # 方式二:先连接,后验证用户
    [root@node1 ~]# redis-cli -h 192.168.4.11 -p 6300
    192.168.4.11:6300> ping				# 未通过验证,会报错
    (error) NOAUTH Authentication required.
    192.168.4.11:6300> auth 123456		# 验证用户之后,可正常使用
    OK
    192.168.4.11:6300> ping
    PONG
    
  • 修改Redis脚本文件,使其可以停止服务

    [root@node1 ~]# /etc/init.d/redis_6379 stop		
    Stopping ...
    Could not connect to Redis at 127.0.0.1:6379: Connection refused	# Redis不能正常关闭
    Waiting for Redis to shutdown ...
    
    观察Redis脚本,可以看到 "$CLIEXEC -p $REDISPORT shutdown"
     - 默认是使用本地"127.0.0.1"去连接Redis服务,执行shutdown命令,但是我们修改了监听地址,就需要手动指定
    
    # 修改Redis脚本文件第43行关于停止Redis服务的命令
    [root@node1 ~]# vim +43 /etc/init.d/redis_6379 
    $CLIEXEC -h 192.168.4.11 -p 6300 -a 123456 shutdown
    
    [root@node1 ~]# /etc/init.d/redis_6379 stop		# 验证效果,Redis可以正常关闭了
    Stopping ...
    Redis stopped
    
posted @ 2021-12-14 23:45  CatdeXin  阅读(218)  评论(0)    收藏  举报