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 <dbid>

2、网络配置项:

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

3、安全配置:

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

4、Limits限制相关的配置:

maxclients 最大并发连接数
maxmemory <bytes> 最大可使用物理内存
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
    发布队列输出缓冲大小
  • <hard-limit>硬限制
  • <soft-limit>软限制
  • <soft-limit seconds>软限制超时时长

二、使用命令

1、redis-cli命令:

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

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

2、与Connection连接相关命令:

help @connection
AUTH <password> 验证
ECHO <message>
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解决方案


    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"
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容

  • ## Generated by install_server.sh ## # Redis configuratio...
    依然饭太稀阅读 2,028评论 0 5
  • linux 启动 redis:cd /usr/local/redis-3.2.0src/redis-server ...
    晏子小七阅读 9,829评论 0 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,651评论 18 139
  • 作者:黄湘龙 花了三天时间,把REDIS 3.0.6英文版大部分都翻译过来了,还有部分没翻译完,等我慢慢更新本文章...
    楚骧阅读 1,718评论 0 0
  • NoSQLRedis基础Redis配置文件基础Redis的持久化Redis的复制Redis的集群 一、NoSQL ...
    哈喽别样阅读 318评论 0 1