1. Tair概述与环境规划
Tair是阿里云自研的高性能分布式KV存储系统,兼容Redis协议,支持多种数据结构。Tair在Redis基础上增加了多种数据结构和功能,如向量搜索、时序数据、布隆过滤器等,特别适合互联网高并发场景。更多学习教程www.fgedu.net.cn
1.1 Tair版本说明
Tair目前主要版本为Tair 2.0,本教程以Tair 2.0为例进行详细讲解。
$ redis-cli -p 5179 INFO server | grep redis_version
redis_version:2.0.0
# 查看服务器信息
$ redis-cli -p 5179 INFO server
# Server
redis_version:2.0.0
server_name:tair
1.2 环境规划
本次安装环境规划如下:
IP地址:192.168.1.51
数据库端口:5179
配置中心端口:5198
数据库目录:/data/tair
日志目录:/var/log/tair
备份目录:/backup/tair
内存规划:
最大内存:32GB
最大客户端连接:10000
1.3 Tair核心特性
1. 兼容Redis:完全兼容Redis协议和API
2. 多数据结构:支持向量、时序、布隆过滤器等
3. 高性能:优化的存储引擎
4. 持久化:支持RDB和AOF持久化
5. 分布式:支持集群模式
6. 多线程:支持多线程处理
7. 内存优化:高效的内存管理
8. 企业级:支持企业级功能
2. 硬件环境要求与检查
在安装Tair之前,需要对服务器硬件环境进行全面检查。学习交流加群风哥微信: itpux-com
2.1 最低硬件要求
CPU:2核心
内存:4GB
磁盘:20GB
推荐配置(生产环境):
CPU:8核心以上
内存:64GB以上
磁盘:200GB以上SSD
高并发环境配置:
CPU:16核心以上
内存:128GB以上
磁盘:500GB以上NVMe SSD
2.2 系统环境检查
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.8 (Ootpa)
# 检查内核版本
# uname -a
Linux fgedudb01 4.18.0-477.10.1.el8_8.x86_64 #1 SMP Fri Apr 4 10:00:00 CST 2026 x86_64 x86_64 x86_64 GNU/Linux
# 检查内存信息
# free -h
total used free shared buff/cache available
Mem: 63Gi 2.0Gi 60Gi 256Mi 1.0Gi 61Gi
Swap: 15Gi 0B 15Gi
# 检查磁盘空间
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg_system-lv_root 50G 2.5G 48G 5% /
/dev/sda2 1014M 150M 865M 15% /boot
/dev/mapper/vg_data-lv_data 200G 20G 180G 10% /data
/dev/mapper/vg_backup-lv_backup 100G 10G 90G 10% /backup
# 检查所需软件包
# rpm -qa | grep -E “gcc|make|cmake|autoconf”
gcc-8.5.0-18.el8.x86_64
make-4.2.1-11.el8.x86_64
cmake-3.20.2-4.el8.x86_64
autoconf-2.69-29.el8.noarch
# 安装依赖包
# dnf install -y gcc gcc-c++ make cmake autoconf automake libtool wget git
2.3 内核参数配置
# vi /etc/sysctl.d/99-tair.conf
# 添加以下参数
# 网络参数
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_tw_reuse = 1
# 内存参数
vm.overcommit_memory = 1
vm.swappiness = 1
# 使内核参数生效
# sysctl -p /etc/sysctl.d/99-tair.conf
# 输出示例:
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
…
vm.overcommit_memory = 1
vm.swappiness = 1
2.4 用户资源限制配置
# vi /etc/security/limits.conf
# 添加以下配置
tair soft nofile 65535
tair hard nofile 65535
tair soft nproc 65535
tair hard nproc 65535
tair soft memlock unlimited
tair hard memlock unlimited
# 禁用透明大页
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 永久禁用
# vi /etc/rc.d/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
# chmod +x /etc/rc.d/rc.local
3. Tair数据库安装步骤
本节详细介绍Tair的安装过程。学习交流加群风哥QQ113257174
3.1 创建用户和目录
# useradd -r -s /sbin/nologin tair
# 创建目录结构
# mkdir -p /data/tair/{data,log}
# mkdir -p /var/log/tair
# mkdir -p /backup/tair
# 设置目录权限
# chown -R tair:tair /data/tair
# chown -R tair:tair /var/log/tair
# chown -R tair:tair /backup/tair
# chmod -R 750 /data/tair
# chmod -R 750 /var/log/tair
# chmod -R 750 /backup/tair
# 验证目录权限
# ls -la /data/
总用量 0
drwxr-xr-x. 3 tair tair 20 4月 4 10:00 tair
3.2 下载并编译Tair
# cd /usr/local/src
# git clone https://github.com/alibaba/tair.git
# 输出示例:
Cloning into ‘tair’…
remote: Enumerating objects: 50000, done.
remote: Counting objects: 100% (5000/5000), done.
remote: Compressing objects: 100% (3000/3000), done.
remote: Total 50000 (delta 2000), reused 4000 (delta 1500), pack-reused 45000
Receiving objects: 100% (50000/50000), 50.00 MiB | 10.00 MiB/s, done.
Resolving deltas: 100% (25000/25000), done.
# 进入源码目录
# cd tair
# 编译Tair
# mkdir build
# cd build
# cmake ..
# make -j$(nproc)
# 输出示例:
— The C compiler identification is GNU 8.5.0
— The CXX compiler identification is GNU 8.5.0
— Check for working C compiler: /usr/bin/cc
— Check for working C compiler: /usr/bin/cc — works
…
[100%] Built target tair-server
# 安装Tair
# make install DESTDIR=/usr/local/tair
# 输出示例:
[100%] Built target tair-server
Install the project…
— Install configuration: “”
— Installing: /usr/local/tair/bin/tair-server
— Installing: /usr/local/tair/bin/tair-client
# 验证安装
# ls -la /usr/local/tair/bin/
总用量 20480
-rwxr-xr-x. 1 root root 20971520 4月 4 10:00 tair-server
-rwxr-xr-x. 1 root root 1048576 4月 4 10:00 tair-client
3.3 创建配置文件
# vi /etc/tair.conf
# 添加以下配置
# 网络配置
bind 192.168.1.51 127.0.0.1
port 5179
protected-mode yes
tcp-backlog 511
timeout 0
tcp-keepalive 300
# 通用配置
daemonize yes
pidfile /var/run/tair/tair.pid
loglevel notice
logfile /var/log/tair/tair.log
databases 16
# 快照配置
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data/tair/data
# 内存配置
maxmemory 32gb
maxmemory-policy allkeys-lru
# 惰性删除
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
# 持久化配置
appendonly yes
appendfilename “appendonly.aof”
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 多线程配置
io-threads 4
io-threads-do-reads yes
# Tair特有配置
# 启用扩展数据结构
enable-extended-data-structures yes
# 创建PID目录
# mkdir -p /var/run/tair
# chown tair:tair /var/run/tair
3.4 创建Systemd服务
# vi /etc/systemd/system/tair.service
[Unit]
Description=Tair In-Memory Data Store
After=network.target
[Service]
Type=forking
User=tair
Group=tair
ExecStart=/usr/local/tair/bin/tair-server /etc/tair.conf
ExecStop=/usr/local/tair/bin/tair-client -p 5179 SHUTDOWN
Restart=always
RestartSec=5
LimitNOFILE=65535
LimitNPROC=65535
[Install]
WantedBy=multi-user.target
# 重载systemd
# systemctl daemon-reload
# 启动Tair服务
# systemctl start tair
# 设置开机自启动
# systemctl enable tair
# 输出示例:
Created symlink /etc/systemd/system/multi-user.target.wants/tair.service → /etc/systemd/system/tair.service.
# 检查服务状态
# systemctl status tair
● tair.service – Tair In-Memory Data Store
Loaded: loaded (/etc/systemd/system/tair.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2026-04-04 10:00:00 CST; 5s ago
Process: 12345 ExecStart=/usr/local/tair/bin/tair-server /etc/tair.conf (code=exited, status=0/SUCCESS)
Main PID: 12346 (tair-server)
Tasks: 9 (limit: 4915)
Memory: 10.0M
CGroup: /system.slice/tair.service
└─12346 /usr/local/tair/bin/tair-server /etc/tair.conf
# 检查端口
# netstat -tlnp | grep tair
tcp 0 0 127.0.0.1:5179 0.0.0.0:* LISTEN 12346/tair-server
tcp 0 0 192.168.1.51:5179 0.0.0.0:* LISTEN 12346/tair-server
4. 数据库参数配置
数据库参数配置是Tair安装的关键步骤,直接影响数据库性能和稳定性。更多学习教程公众号风哥教程itpux_com
4.1 内存管理配置
$ redis-cli -h 192.168.1.51 -p 5179
192.168.1.51:5179> CONFIG GET maxmemory
1) “maxmemory”
2) “34359738368”
192.168.1.51:5179> CONFIG GET maxmemory-policy
1) “maxmemory-policy”
2) “allkeys-lru”
# 设置最大内存
192.168.1.51:5179> CONFIG SET maxmemory 64gb
OK
# 设置内存淘汰策略
192.168.1.51:5179> CONFIG SET maxmemory-policy allkeys-lru
OK
# 查看内存使用情况
192.168.1.51:5179> INFO memory
# Memory
used_memory:1024000
used_memory_human:1000.00K
used_memory_rss:2048000
used_memory_rss_human:2.00M
used_memory_peak:1024000
used_memory_peak_human:1000.00K
total_system_memory:68719476736
total_system_memory_human:64.00G
maxmemory:68719476736
maxmemory_human:64.00G
maxmemory_policy:allkeys-lru
192.168.1.51:5179> EXIT
4.2 持久化配置
$ redis-cli -h 192.168.1.51 -p 5179
# 查看持久化配置
192.168.1.51:5179> CONFIG GET appendonly
1) “appendonly”
2) “yes”
192.168.1.51:5179> CONFIG GET appendfsync
1) “appendfsync”
2) “everysec”
# 手动触发RDB快照
192.168.1.51:5179> BGSAVE
Background saving started
# 查看RDB状态
192.168.1.51:5179> LASTSAVE
(integer) 1712205600
# 手动触发AOF重写
192.168.1.51:5179> BGREWRITEAOF
Background append only file rewriting started
# 查看持久化状态
192.168.1.51:5179> INFO persistence
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1712205600
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:0
aof_enabled:1
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:0
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
192.168.1.51:5179> EXIT
4.3 多线程配置
$ redis-cli -h 192.168.1.51 -p 5179
# 查看线程配置
192.168.1.51:5179> CONFIG GET io-threads
1) “io-threads”
2) “4”
192.168.1.51:5179> CONFIG GET io-threads-do-reads
1) “io-threads-do-reads”
2) “yes”
# 设置线程数
192.168.1.51:5179> CONFIG SET io-threads 8
OK
# 线程配置说明:
# io-threads: IO线程数,建议设置为CPU核心数
# io-threads-do-reads: 是否在IO线程中执行读操作
# 查看服务器信息
192.168.1.51:5179> INFO server
# Server
redis_version:2.0.0
server_name:tair
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:abc123
redis_mode:standalone
os:Linux 4.18.0-477.el8.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:8.5.0
process_id:12346
run_id:abc123def456
tcp_port:5179
uptime_in_seconds:3600
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:12345678
executable:/usr/local/tair/bin/tair-server
config_file:/etc/tair.conf
io_threads_active:1
192.168.1.51:5179> EXIT
5. 数据类型与操作
Tair支持多种数据类型,包括字符串、哈希、列表、集合、有序集合以及Tair特有的扩展数据结构。from:www.itpux.com
5.1 基础数据类型操作
$ redis-cli -h 192.168.1.51 -p 5179
# 字符串操作
192.168.1.51:5179> SET fgedu:name “风哥教程”
OK
192.168.1.51:5179> GET fgedu:name
“风哥教程”
# 哈希操作
192.168.1.51:5179> HSET fgedu:user:1 name “张三” age 30 email “zhangsan@fgedu.net.cn”
(integer) 3
192.168.1.51:5179> HGETALL fgedu:user:1
1) “name”
2) “张三”
3) “age”
4) “30”
5) “email”
6) “zhangsan@fgedu.net.cn”
# 列表操作
192.168.1.51:5179> LPUSH fgedu:list “item1” “item2” “item3”
(integer) 3
192.168.1.51:5179> LRANGE fgedu:list 0 -1
1) “item3”
2) “item2”
3) “item1”
# 集合操作
192.168.1.51:5179> SADD fgedu:set “member1” “member2” “member3”
(integer) 3
192.168.1.51:5179> SMEMBERS fgedu:set
1) “member1”
2) “member2”
3) “member3”
# 有序集合操作
192.168.1.51:5179> ZADD fgedu:zset 100 “member1” 200 “member2” 150 “member3”
(integer) 3
192.168.1.51:5179> ZRANGE fgedu:zset 0 -1 WITHSCORES
1) “member1”
2) “100”
3) “member3”
4) “150”
5) “member2”
6) “200”
192.168.1.51:5179> EXIT
5.2 Tair扩展数据结构
$ redis-cli -h 192.168.1.51 -p 5179
# TairBloom: 布隆过滤器
192.168.1.51:5179> TBLOOM.ADD fgedu:bloom “user1”
1) (integer) 1
192.168.1.51:5179> TBLOOM.EXISTS fgedu:bloom “user1”
1) (integer) 1
192.168.1.51:5179> TBLOOM.EXISTS fgedu:bloom “user999”
1) (integer) 0
# TairSearch: 搜索引擎
192.168.1.51:5179> TFT.CREATEINDEX fgedu:index SCHEMA title TEXT WEIGHT 1.0 content TEXT WEIGHT 0.5
OK
192.168.1.51:5179> TFT.ADD fgedu:index doc1 1.0 FIELDS title “风哥教程” content “数据库教程”
“OK”
192.168.1.51:5179> TFT.SEARCH fgedu:index “风哥”
1) (integer) 1
2) “doc1”
3) 1) “title”
2) “风哥教程”
3) “content”
4) “数据库教程”
# TairVector: 向量搜索
192.168.1.51:5179> TVS.CREATEINDEX fgedu:vector 128 HNSW
OK
192.168.1.51:5179> TVS.HSET fgedu:vector key1 VECTOR 128 [0.1,0.2,…] metadata “product1”
(integer) 1
192.168.1.51:5179> TVS.KNNSEARCH fgedu:vector 10 [0.1,0.2,…]
1) 1) “key1”
2) “0.0001”
# TairTS: 时序数据
192.168.1.51:5179> TS.CREATE fgedu:ts:cpu
OK
192.168.1.51:5179> TS.ADD fgedu:ts:cpu 1712205600000 80.5
(integer) 1712205600000
192.168.1.51:5179> TS.RANGE fgedu:ts:cpu – +
1) 1) (integer) 1712205600000
2) “80.5”
192.168.1.51:5179> EXIT
5.3 事务与Lua脚本
$ redis-cli -h 192.168.1.51 -p 5179
# 事务操作
192.168.1.51:5179> MULTI
OK
192.168.1.51:5179> SET fgedu:key1 “value1”
QUEUED
192.168.1.51:5179> SET fgedu:key2 “value2”
QUEUED
192.168.1.51:5179> EXEC
1) OK
2) OK
# Lua脚本
192.168.1.51:5179> EVAL “return redis.call(‘GET’, KEYS[1])” 1 fgedu:name
“风哥教程”
# 脚本缓存
192.168.1.51:5179> SCRIPT LOAD “return redis.call(‘GET’, KEYS[1])”
“abc123def456…”
192.168.1.51:5179> EVALSHA abc123def456… 1 fgedu:name
“风哥教程”
192.168.1.51:5179> EXIT
6. 网络连接配置
网络连接配置是客户端访问数据库的关键,需要正确配置监听端口和连接方式。更多学习教程www.fgedu.net.cn
6.1 配置网络监听
# netstat -tlnp | grep tair
tcp 0 0 127.0.0.1:5179 0.0.0.0:* LISTEN 12346/tair-server
tcp 0 0 192.168.1.51:5179 0.0.0.0:* LISTEN 12346/tair-server
# 修改监听配置
# vi /etc/tair.conf
bind 0.0.0.0
# 重启服务
# systemctl restart tair
# 配置防火墙
# firewall-cmd –permanent –add-port=5179/tcp
success
# firewall-cmd –reload
success
6.2 配置认证
$ redis-cli -h 192.168.1.51 -p 5179
# 设置密码
192.168.1.51:5179> CONFIG SET requirepass “fgedupass123”
OK
# 使用密码连接
$ redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123
# 或连接后认证
$ redis-cli -h 192.168.1.51 -p 5179
192.168.1.51:5179> AUTH fgedupass123
OK
# 永久设置密码
# vi /etc/tair.conf
requirepass fgedupass123
# 重启服务
# systemctl restart tair
6.3 配置主从复制
# vi /etc/tair.conf
replicaof 192.168.1.51 5179
masterauth fgedupass123
# 重启从节点服务
# systemctl restart tair
# 在主节点查看复制状态
$ redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123
192.168.1.51:5179> INFO replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.1.52,port=5179,state=online,offset=1234,lag=0
master_replid:abc123def456
master_repl_offset:1234
# 在从节点查看复制状态
192.168.1.52:5179> INFO replication
# Replication
role:slave
master_host:192.168.1.51
master_port:5179
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:1234
7. 备份恢复配置
备份恢复是数据库管理的重要环节,Tair提供了RDB和AOF两种持久化方式。学习交流加群风哥微信: itpux-com
7.1 RDB备份
$ redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123
# 手动触发RDB快照
192.168.1.51:5179> BGSAVE
Background saving started
# 查看RDB状态
192.168.1.51:5179> LASTSAVE
(integer) 1712205600
# 查看RDB文件
# ls -la /data/tair/data/
总用量 1024
-rw-r–r–. 1 tair tair 512 4月 4 10:00 dump.rdb
# 复制RDB文件到备份目录
# cp /data/tair/data/dump.rdb /backup/tair/dump_$(date +%Y%m%d).rdb
# 验证备份文件
# ls -la /backup/tair/
总用量 512
-rw-r–r–. 1 root root 512 4月 4 10:00 dump_20260404.rdb
7.2 AOF备份
# ls -la /data/tair/data/
总用量 2048
-rw-r–r–. 1 tair tair 512 4月 4 10:00 appendonly.aof
-rw-r–r–. 1 tair tair 512 4月 4 10:00 dump.rdb
# 复制AOF文件到备份目录
# cp /data/tair/data/appendonly.aof /backup/tair/appendonly_$(date +%Y%m%d).aof
# 验证备份文件
# ls -la /backup/tair/
总用量 1024
-rw-r–r–. 1 root root 512 4月 4 10:00 appendonly_20260404.aof
-rw-r–r–. 1 root root 512 4月 4 10:00 dump_20260404.rdb
7.3 数据恢复
# systemctl stop tair
# 恢复RDB文件
# cp /backup/tair/dump_20260404.rdb /data/tair/data/dump.rdb
# chown tair:tair /data/tair/data/dump.rdb
# 恢复AOF文件
# cp /backup/tair/appendonly_20260404.aof /data/tair/data/appendonly.aof
# chown tair:tair /data/tair/data/appendonly.aof
# 启动Tair服务
# systemctl start tair
# 验证数据
$ redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123
192.168.1.51:5179> GET fgedu:name
“风哥教程”
192.168.1.51:5179> EXIT
7.4 自动备份脚本
# vi /usr/local/bin/tair_backup.sh
#!/bin/bash
BACKUP_DIR=/backup/tair
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE=/var/log/tair/backup.log
echo “=== Backup started at $(date) ===” >> $LOG_FILE
# 触发RDB快照
redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123 BGSAVE >> $LOG_FILE 2>&1
# 等待快照完成
sleep 5
# 复制备份文件
cp /data/tair/data/dump.rdb ${BACKUP_DIR}/dump_${DATE}.rdb >> $LOG_FILE 2>&1
if [ $? -eq 0 ]; then
echo “Backup completed successfully” >> $LOG_FILE
else
echo “Backup failed” >> $LOG_FILE
fi
# 清理30天前的备份
find ${BACKUP_DIR} -name “dump_*.rdb” -mtime +30 -delete >> $LOG_FILE 2>&1
echo “=== Backup finished at $(date) ===” >> $LOG_FILE
echo “” >> $LOG_FILE
# 设置脚本权限
# chmod +x /usr/local/bin/tair_backup.sh
# 配置定时任务
# crontab -e
# 添加以下内容(每天凌晨2点执行备份)
0 2 * * * /usr/local/bin/tair_backup.sh
8. 升级与迁移
数据库升级和迁移是运维工作中的重要环节,需要仔细规划和执行。更多学习教程公众号风哥教程itpux_com
8.1 版本升级
$ redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123 INFO server | grep redis_version
redis_version:2.0.0
# 执行完整备份
# redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123 BGSAVE
# 停止服务
# systemctl stop tair
# 备份配置文件
# cp /etc/tair.conf /etc/tair.conf.bak
# 下载新版本并编译安装
# cd /usr/local/src
# git clone https://github.com/alibaba/tair.git tair-new
# cd tair-new
# mkdir build && cd build
# cmake ..
# make -j$(nproc)
# make install DESTDIR=/usr/local/tair
# 启动服务
# systemctl start tair
# 验证版本
$ redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123 INFO server | grep redis_version
redis_version:2.1.0
8.2 从Redis迁移
# 在Redis上执行
$ redis-cli -h redis_host -p 6379 BGSAVE
# 复制RDB文件到Tair服务器
$ scp /var/lib/redis/dump.rdb tair_host:/data/tair/data/dump.rdb
# 在Tair服务器上
# chown tair:tair /data/tair/data/dump.rdb
# systemctl restart tair
# 方法2:使用主从复制迁移
# 在Tair上配置
# vi /etc/tair.conf
replicaof redis_host 6379
# 重启Tair
# systemctl restart tair
# 等待数据同步完成
$ redis-cli INFO replication
# 同步完成后断开复制
$ redis-cli REPLICAOF NO ONE
# 方法3:使用redis-cli –rdb迁移
$ redis-cli –rdb /tmp/dump.rdb -h redis_host -p 6379
$ redis-cli -h tair_host -p 5179 –pipe < /tmp/dump.rdb
9. 生产环境实战案例
本节提供一个完整的生产环境配置案例,帮助读者更好地理解Tair的实际应用。from:www.itpux.com
9.1 高可用集群配置
# vi /etc/tair-sentinel.conf
port 26379
sentinel monitor fgedumaster 192.168.1.51 5179 2
sentinel auth-pass fgedumaster fgedupass123
sentinel down-after-milliseconds fgedumaster 30000
sentinel parallel-syncs fgedumaster 1
sentinel failover-timeout fgedumaster 180000
logfile /var/log/tair/sentinel.log
dir /data/tair
# 创建Sentinel服务文件
# vi /etc/systemd/system/tair-sentinel.service
[Unit]
Description=Tair Sentinel
After=network.target
[Service]
Type=forking
User=tair
Group=tair
ExecStart=/usr/local/tair/bin/tair-server /etc/tair-sentinel.conf –sentinel
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
# 启动Sentinel
# systemctl daemon-reload
# systemctl start tair-sentinel
# systemctl enable tair-sentinel
# 查看Sentinel状态
$ redis-cli -p 26379 INFO sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=fgedumaster,status=ok,address=192.168.1.51:5179,slaves=1,sentinels=3
9.2 性能监控
$ redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123
# 查看统计信息
192.168.1.51:5179> INFO stats
# Stats
total_connections_received:100
total_commands_processed:10000
instantaneous_ops_per_sec:100
total_net_input_bytes:1000000
total_net_output_bytes:10000000
instantaneous_input_kbps:100.00
instantaneous_output_kbps:1000.00
rejected_connections:0
sync_full:1
sync_partial_ok:0
sync_partial_err:0
expired_keys:10
evicted_keys:0
keyspace_hits:5000
keyspace_misses:100
# 查看客户端连接
192.168.1.51:5179> CLIENT LIST
id=1 addr=127.0.0.1:12345 fd=8 name= age=3600 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
# 查看慢查询日志
192.168.1.51:5179> SLOWLOG GET 10
1) 1) (integer) 1
2) (integer) 1712205600
3) (integer) 10000
4) 1) “KEYS”
2) “*”
5) “192.168.1.100:12345”
6) “client1”
# 查看内存使用
192.168.1.51:5179> MEMORY USAGE fgedu:name
(integer) 64
192.168.1.51:5179> EXIT
9.3 性能测试
$ redis-benchmark -h 192.168.1.51 -p 5179 -a fgedupass123 -t set,get -n 100000 -c 50
# 输出示例:
====== SET ======
100000 requests completed in 1.00 seconds
50 parallel clients
3 bytes payload
keep alive: 1
host configuration “save”: 900 1 300 10 60 10000
host configuration “appendonly”: yes
multi-thread: yes
threads: 4
Latency by percentile distribution:
0.000% <= 0.031 milliseconds (cumulative count 1)
50.000% <= 0.127 milliseconds (cumulative count 50123)
75.000% <= 0.159 milliseconds (cumulative count 75234)
87.500% <= 0.191 milliseconds (cumulative count 87654)
93.750% <= 0.223 milliseconds (cumulative count 93765)
96.875% <= 0.255 milliseconds (cumulative count 96876)
98.438% <= 0.287 milliseconds (cumulative count 98432)
99.219% <= 0.319 milliseconds (cumulative count 99218)
99.609% <= 0.351 milliseconds (cumulative count 99609)
99.805% <= 0.383 milliseconds (cumulative count 99805)
99.902% <= 0.415 milliseconds (cumulative count 99902)
99.951% <= 0.447 milliseconds (cumulative count 99951)
99.976% <= 0.479 milliseconds (cumulative count 99976)
99.988% <= 0.511 milliseconds (cumulative count 99988)
99.994% <= 0.543 milliseconds (cumulative count 99994)
99.997% <= 0.575 milliseconds (cumulative count 99997)
99.998% <= 0.607 milliseconds (cumulative count 99998)
99.999% <= 0.639 milliseconds (cumulative count 99999)
100.000% <= 0.671 milliseconds (cumulative count 100000)
Summary:
throughput summary: 100000.00 requests per second
latency summary (msec):
avg min p50 p95 p99 max
0.128 0.032 0.127 0.183 0.239 0.671
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
