Redis高级配置使用和集群

一、配置和使用Redis:

  • 配置文件目录:/etc/redis.conf

基本配置项 # INCLUDES #
网络配置项 # NETWORK #
一般配置项 # GENERAL #
持久化相关配置 # SNAPSHOTTING #
复制相关的配置 # REPLICATION #
安全相关配置 # SECURITY #
Limit限制相关的配置 # LIMITS #
LUA脚本相关配置 # LUA SCRIPTING #
集群相关配置 # REDIS CLUSTER #
监控相关配置项 # LATENCY MONITOR #
SlowLog慢日志相关的配置 # SLOW LOG #
INCLUDES事件通知 # EVENT NOTIFICATION #
Advanced高级配置 # ADVANCED CONFIG #

1、通用配置项:

daemonize, 是否以守护方式运行
supervised, 运行级别
loglevel, 日志级别
pidfile, pid文件位置
logfile,日志文件位置
databases:设定数据库数量,默认为16个,每个数据库的名字均为整数,从0开始编号,默认操作的数据库为0;
切换数据库的方法:SELECT

2、网络配置项:

bind IP 绑定ip,监听地址
port PORT 监听地址端口,默认6379
protected-mode 工作于保护模式,在没有绑定或没有启用认证时候,启用此选项,只能本地访问
tcp-backlog 后援队列
unixsocket 如果本机到本机通信,可以监听一个文件,更高效
timeout:客户端连接的空闲超时时长;
tcp-keepalive tcp的保持连接

3、安全配置:

requirepass 认证设置密码
rename-command 修改名称
在AOF或Replication环境中,不推荐使用;

4、Limits限制相关的配置:

maxclients 最大并发连接数
maxmemory 最大可使用物理内存
maxmemory-policy noeviction 内存淘汰策略
淘汰策略:
volatile-lru 把带有EX过期标记的键,基于LRU算法淘汰掉。
allkeys-lru 把所有的键,基于LRU算法淘汰掉。volatile-ttl, 把带有EX标记的键,离终结时间近的淘汰
noeviction 不淘汰
maxmemory-samples 5 淘汰算法运行时的采样样本数,一次选择5个然后淘汰;

5、SlowLog慢查询日志相关的配置:

slowlog-log-slower-than 10000 查询时间超出多少微秒,是慢查询
单位是微秒,1000微秒=0.01秒;
slowlog-max-len 128 查询最大多少字节
SlowLog记录的日志最大条目;

6、ADVANCED事件配置:

hash-max-ziplist-entries 512 一个数组最多有多少元素
hash-max-ziplist-value 64 一个元素有多少值

设置ziplist的键数量最大值,每个值的最大空间;
  • client-output-buffer-limit normal 0 0 0 普通客户端输出缓冲大小,硬限制、软限制、软限制超时时长
  • client-output-buffer-limit slave 256mb 64mb 60 从服务器端输出缓冲大小 ,硬限制256m、软限制64m、软限制超时时长60秒后清除
  • client-output-buffer-limit pubsub 32mb 8mb 60
    发布队列输出缓冲大小
  • 硬限制
  • 软限制
  • 软限制超时时长

二、使用命令

1、redis-cli命令:

  • 格式: redis-cli [OPTIONS] [cmd [arg [arg ...]]]

-h HOST 主机
-p PORT 端口
-a PASSWORD 密码
-n DBID

2、与Connection连接相关命令:

help @connection
AUTH 验证
ECHO
PING 测试ping
QUIT 退出
SELECT dbid

3、清空数据库相关命令:

FLUSHDB:Remove all keys from the current database
清空当前数据库;
FLUSHALL:Remove all keys from all databases
清空所有数据库;

  • 注意:谨慎使用!!!!!

4、Server相关的命令:

CLIENT GETNAME
*CLIENT KILL
CLIENT KILL [ip:port] [ID client-id] [TYPE normal|master|slave|pubsub] [ADDR ip:port] [SKIPME yes/no]
*CLIENT LIST
CLIENT PAUSE
CLIENT PAUSE timeout
CLIENT REPLY
CLIENT SETNAME:设置当前连接的名字
SHUTDOWN [NOSAVE|SAVE]
CONFIG GET 获取设置
CONFIG RESETSTAT 重置各自计数器
CONFIG REWRITE 内存中的设置覆盖配置文件
CONFIG SET 设定
INFO:服务器状态信息查看;分为多个secion;
INFO [section]

5、示例:配置参数可运行时候修改

[root@redis-25 ~]# redis-cli
#获取配置文件中requirepass值
127.0.0.1:6379> CONFIG GET requirepass
1) "requirepass"
2) ""

#设置配置文件中requirepass值
127.0.0.1:6379> CONFIG SET requirepass 321
OK

#测试requirepass生效,需要验证
127.0.0.1:6379> CONFIG GET requirepass
(error) NOAUTH Authentication required.
127.0.0.1:6379> AUTH 321
OK

#内存中的值写入配置文件
# Generated by CONFIG REWRITE
requirepass "321"

#查看配置文件requirepass以改变
[root@redis-25 ~]# vim /etc/redis.conf 
# Generated by CONFIG REWRITE
requirepass "321"

三、redis的集群技术:

  • 集群技术有客户端分片和代理分片
  • 豌豆荚使用的是codis解决方案
  • twitter使用的是twemproxy解决方案


    Redis高级配置使用和集群_第1张图片
    twemproxy

redis cluster解决方案示例

192.168.1.23节点1,主节点端口6379,从节点端口6380
192.168.1.24节点2,主节点端口6379,从节点端口6380
192.168.1.25节点3,主节点端口6379,从节点端口6380

节点3配置
#同步时间
#安装启动redis
[root@redis-25 ~]# vim /etc/redis.conf
bind 0.0.0.0
port 6379
## REDIS CLUSTER  ##
cluster-enabled yes #是否启用集群
cluster-config-file nodes-6379.conf  #集群自己使用的配置文件,编译安装需创建,rpm安装的它的目录在etc下
cluster-node-timeout 15000 #判断节点故障时长
#其他冗余配置使用默认即可
 cluster-slave-validity-factor 10 #如果从节点超过阈值,不可以提升为主节点

#把配置文件拷贝到其他节点
[root@redis-25 ~]# scp /etc/redis.conf 192.168.1.23:/etc/redis.conf 
[root@redis-25 ~]# scp /etc/redis.conf 192.168.1.24:/etc/redis.conf 

#本机设置从节点
[root@redis-25 ~]# cp /etc/redis.conf /etc/redis-6380.conf
[root@redis-25 ~]# vim /etc/redis-6380.conf 
bind 0.0.0.0
port 6380
## REDIS CLUSTER  ##
cluster-enabled yes #是否启用集群
cluster-config-file nodes-6380.conf  #集群自己使用的配置文件,编译安装需创建,rpm安装的它的目录在etc下
cluster-node-timeout 15000 #判断节点故障时长
#其他冗余配置使用默认即可
 cluster-slave-validity-factor 10 #如果从节点超过阈值,不可以提升为主节点
port 6380
[root@redis-25 ~]# ./redis-server -c /etc/redis-6380.conf 
其他两个节点1和节点2配置相同
#查询当前集群状态
[root@redis-23 ~]# systemctl start redis
[root@redis-23 ~]# redis-cli
127.0.0.1:6379> CLUSTER INFO
cluster_state:fail    #集群信息失败
cluster_slots_assigned:0  #还没有分配slots
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:1
cluster_size:0
cluster_current_epoch:0
cluster_my_epoch:0
cluster_stats_messages_sent:0
cluster_stats_messages_received:0
#第一个节点添加分配slots,范围0-5461
[root@redis-23 ~]# for i in {0..5461}; do redis-cli CLUSTER ADDSLOTS $i; done

#第二个节点添加分配slots,范围5462-10922
[root@redis-24 ~]# for i in {5462..10922}; do redis-cli CLUSTER ADDSLOTS $i; done

#第三个节点添加分配slots,范围10923-16384
[root@redis-25 ~]# for i in {10923..16384}; do redis-cli CLUSTER ADDSLOTS $i; done

#节点添加到集群
[root@redis-23 ~]# redis-cli
127.0.0.1:6379> CLUSTER MEET 192.168.1.24 6379
OK
127.0.0.1:6379> CLUSTER MEET 192.168.1.25 6379
OK
127.0.0.1:6379> CLUSTER INFO
cluster_state:ok   #集群成功
cluster_slots_assigned:16384  #slots数量为16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:3   #集群节点3个
cluster_size:3
cluster_current_epoch:2
cluster_my_epoch:1
cluster_stats_messages_sent:49
cluster_stats_messages_received:49

集群节点状态

127.0.0.1:6379> CLUSTER NODES
e1dc2949f385a6e3da6c4c4fdb9b4237a71fb4f0 192.168.1.25:6379 master - 0 1541604377719 0 connected 10923-16383
110f444c4edd6da4ddc6f5c6bf8ff4d0c9244047 192.168.1.23:6379 myself,master - 0 0 1 connected 0-5461
6238596f3e9177db088eae2ddbf9753458b5735c 192.168.1.24:6379 master - 0 1541604376709 2 connected 5462-10922

测试

#循环创建一百个键值
[root@redis-24 ~]# for i in {1..100}; do redis-cli SET key$i value$i;done
[root@redis-24 ~]# redis-cli
127.0.0.1:6379> GET key1
"value1"

你可能感兴趣的:(Redis高级配置使用和集群)