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

浙公网安备 33010602011771号