Redis安装部署.docx
《Redis安装部署.docx》由会员分享,可在线阅读,更多相关《Redis安装部署.docx(34页珍藏版)》请在冰豆网上搜索。
![Redis安装部署.docx](https://file1.bdocx.com/fileroot1/2023-5/23/8c2726a0-792b-4af4-b359-f408dad89ab2/8c2726a0-792b-4af4-b359-f408dad89ab21.gif)
Redis安装部署
1 概要
Redis服务器环境的安装。
指导系统部署和维护使用,
以64位Linux环境下安装使用
2 缩略语和术语
缩略语/术语
全 称
说 明
appendonlyfile(aof)
全持久化模式
Redis解压目录
Redis安装目录
3 要求
编译Redis的要求如下:
磁盘空间
必须保证有50G以上的临时磁盘自由空间。
Redis安装完毕后会占据10MB左右的空间,实际磁盘需求会因编译设置和是否安装第三方模块而有所不同。
4 升级注意事项
如果Redis已经安装过,请先备份原Redis的所有配置文件,即目录下的所有文件
5 操作步骤说明
5.1 安装前环境说明
N/A
5.2 下载
Redis可以到官方网站:
http:
//www.redis.io/download下载
本文档用
Win版下载地址:
5.3 Redis 介绍
Redis是RemoteDictionaryServer的缩写。
他本质上一个Key/Value数据库,与Memcached类似的NoSQL型数据库,但是他的数据可以持久化的保存在磁盘上,解决了服务重启后数据不丢失的问题,他的值可以是string(字符串)、list(列表)、sets(集合)或者是orderedsets(被排序的集合),所有的数据类型都具有push/pop、add/remove、执行服务端的并集、交集、两个sets集中的差别等等操作,这些操作都是具有原子性的,Redis还支持各种不同的排序能力。
目录结构:
根目录下:
redis.conf 默认配置文件
Src目录:
make命令执行完成后,会在src目录下生成5个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-dump,各命令详情请参考5.7redis命令详解
5.4 解压
解压Redis的tar包很简单:
tar-zxvfredis-2.4.14.tar.gz
这样就在当前目录下新建了一个包含发行版源代码的目录,必须cd进入这个目录以继续服务器的编译。
5.5 编译及安装
进入redis解压目录,执行如下命令编译Redis:
cd
make test
makeprefix=install
安装tcmalloc包需指定参数,如makeUSE_TCMALLOC=yesFORCE_LIBC_MALLOC=yes
因为对一个基本的配置的编译,一般需要1分钟左右的时间,实际需要的时间因你的硬件和选择的模块数量会有很大不同。
5.6 配置
接着,复制redis.conf到/conf/下,修改配置文件,来配置Redis服务器。
vi/conf/redis.conf
我们一般只需要作简单的配置,参考 7Redis说明
查看配置文件:
grep-v'^#\|^$'redis.conf
需设置内核针对内存分配的策略:
6.6调整overcommit_memory参数
5.7 设置环境变量
进入当前用户主目录:
vi.bash_profile
PATH=$PATH:
.:
$/bin:
$PATH
保存后执行如下命令
..bash_profile
退出终端后,重新登录后查看环境变量是否生效
5.8 启动、停止重新加载Redis配置
进入的bin目录下。
5.8.1 启动Redis服务器
命令:
cd/bin
redis-serverconf/redis.conf
注:
此命令仅有一个启动参数,指定目录下的配置文件,不加参数执行默认配置。
测试启动redis-cliping返回PONG,启动成功。
查看端口是否被占用:
netstat–ntlp|grep6379
5.8.2 停止Redis
关闭服务
redis-clishutdown
如果非默认端口,可指定端口:
redis-cli-p6380shutdown
5.8.3 连接Redis
两种连接方式:
1:
windowDOS方式:
tentel主机IP端口号(默认为127.0.0.1:
6379)
2:
linux客户端方式:
redis-cli 主机IP 端口号(默认为127.0.0.16379)
5.9 redis常用命令详解
5.9.1 redis-benchmark
Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能。
redis的基准信息和性能检测。
redis-benchmark-hlocalhost-p6379-c100-n100000
100个并发连接,100000个请求,检测host为localhost端口为6379的redis服务器性能
./redis-benchmark -n 100000 –c 50
======–c50======
100000requestscompletedin1.93seconds(100000个请求完成于 1.93 秒 )
50 parallel clients (每个请求有50个并发客户端)
3 bytes payload (每次写入3字节)
keep alive:
1 (保持1个连接)
58.50% <= 0 milliseconds
99.17% <= 1 milliseconds
99.58% <= 2 milliseconds
99.85% <= 3 milliseconds
99.90% <= 6 milliseconds
100.00% <= 9 milliseconds
(所有请求在62毫秒内完成)
114293.71 requests per second(每秒 114293.71 次查询)
redis-benchmark参数
-h
设置检测主机IP地址,默认为127.0.0.1
-p
设置检测主机的端口号,默认为6379
-s
服务器套接字(压倒主机和端口)
-c
并发连接数
-n
请求数
-d
测试使用的数据集的大小/字节的值(默认3字节)
-k
1:
表示保持连接(默认值)0:
重新连接
-r
SET/GET/INCR方法使用随机数插入数值,设置10则插入值为rand:
000000000000-rand:
000000000009
-P
默认为1(无管道),当网络延迟过长时,使用管道方式通信(请求和响应打包发送接收)
-q
简约信息模式,只显示查询和秒值等基本信息。
--csv
以CSV格式输出信息
-l
无线循环插入测试数据,ctrl+c停止
-t
只运行测试逗号分隔的列表命令,如:
-tping,set,get
-I
空闲模式。
立即打开50个空闲连接和等待。
例子:
$redis-benchmark基本测试
$redis-benchmark-h192.168.1.1-p6379-n100000-c20
$redis-benchmark-tset-n1000000-r100000000
$redis-benchmark-tping,set,get-n100000–csv
$redis-benchmark-r10000-n10000lpushmylistele:
rand:
000000000000
5.9.2 redis-server
Redis服务器的daemon启动程序
redis-server 启动并加装默认配置文件[/path/to/redis.conf]
redis-server /biran/conf/redis.conf启动并加装指定配置文件
redis-server-(readconfigfromstdin) 使用标准输入读取配置为启动参数
redis-server--test-memory256检测256MB内存
redis-server–version查版本号
5.9.3 redis-cli
Redis命令行操作工具。
当然,你也可以用telnet根据其纯文本协议来操作
可输入redis-cli直接进入命令行操作界面。
redis-cli参数
-h
设置检测主机IP地址,默认为127.0.0.1
-p
设置检测主机的端口号,默认为6379
-s
服务器套接字(压倒主机和端口)
-a
连接到Master服务器时使用的密码
-r
执行指定的N次命令
-i
执行命令后等待N秒,如–i0.1info(执行后等0.1秒)
-n
指定连接N号ID数据库,如 –n3(连接3号数据库)
-x
从控制台输入的信息中读取最后一个参数
-d
定义多个定界符为默认输出格式(默认:
\n)
--raw
使用原数据格式返回输出内容
--latency
进入一个不断延时采样的特殊模式
--slave
模拟一个从服务器到主服务器的命令显示反馈
--pipe
使用管道协议模式
--bigkeys
监听显示数据量大的key值,--bigkeys-i0.1
--help
显示命令行帮助信息
--version
显示版本号
例子:
$ redis-cli进入命令行模式
$redis-cli-r3info 重复执行info命令三次
$cattestStr.txt|redis-cli-xsettestStr读取testStr.txt文件所有内容设置为testStr的值
$redis-cli-r100lpushmylistx
$ redis-cli-r100-i1info|grepused_memory_human
5.9.4 redis-check-aof
更新日志检查,加--fix参数为修复log文件
redis-check-aofappendonly.aof
5.9.5 redis-check-dump
检查本地数据库文件
redis-check-dump dump.rdb
5.9.6 查看、删除key信息
redis-clikeys\* #查看所有键值信息
redis-cli-n1keys"test*"|xargsredis-cli-n1del删除DBID为1的test开头的key值
5.9.7 获取服务器的信息和统计
redis-cliinfo查询系统信息。
默认为localhost,端口为6379。
redis-cli-p6379info| grep'\' 过滤查询used_memory属性
当used_memory_rss接近maxmemory或者used_memory_peak超过maxmemory时,要加大maxmemory 负责性能下降
redis服务的统计信息:
redis_version:
2.4.14
Redis版本号
redis_git_sha1:
00000000
redis_git_dirty:
0
Git版本?
?
arch_bits:
64
64位系统
multiplexing_api:
epoll
gcc_version:
4.1.2
gcc版本号
process_id:
5551
当前服务器进程id
uptime_in_seconds:
1538
正常工作时间(秒)
uptime_in_days:
0
正常工作天数
lru_clock:
1975799
used_cpu_sys:
0.04
Cpu使用率
used_cpu_user:
0.09
used_cpu_sys_children:
0.01
used_cpu_user_children:
0.04
connected_clients:
2
客户端连接数
connected_slaves:
0
从服务器连接数
client_longest_output_list:
0
client_biggest_input_buf:
0
blocked_clients:
0
锁定的客户端
used_memory:
3765272
redis数据占用的内存,单位bytes(字节)
used_memory_human:
3.59M
重点关注!
used_memory_rss:
4665344
redis占用的物理内存
used_memory_peak:
3756712
redis使用物理内存的峰值
used_memory_peak_human:
3.58M
mem_fragmentation_ratio:
1.24
内存碎片率
mem_allocator:
jemalloc-2.2.5
内存分配器版本
loading:
0
aof_enabled:
0
是否开启纯累加模式
changes_since_last_save:
0
bgsave_in_progress:
0
后台异步保存数据的进程数
last_save_time:
1340962658
bgrewriteaof_in_progress:
0
异步重写 AOF 文件以反应当前数据库的状态的进程数
total_connections_received:
3
接受到的总连接数
total_commands_processed:
10156
服务器处理的命令数量
expired_keys:
0
失效key的总数量
evicted_keys:
0
已删除的key的总数量
keyspace_hits:
0
Key命中次数
keyspace_misses:
0
Key未命中次数
pubsub_channels:
0
订阅信息
pubsub_patterns:
0
latest_fork_usec:
579
最近子进程
vm_enabled:
0
是否使用虚拟内存0:
不使用,1:
使用
role:
slave
master为主服务器slave为从服务器
master_host:
127.0.0.1
连接主服务器IP
master_port:
6379
连接主服务器端口号
master_link_status:
up
master_last_io_seconds_ago:
2
距离最后一次的连接时间
master_sync_in_progress:
0
同步主服务器进程数
db0:
keys=3,expires=0
1号数据库保存的key数量,及超时时间
db1:
keys=1,expires=0
2号数据库保存的key数量,及超时时间
5.9.8 Redis的query分析
redis-faina(是由Instagram开发并开源的一个Redis查询分析小工具,需安装python环境。
redis-faina是通过Redis的MONITOR命令来实现的,通过对在Redis上执行的query进行监控,统计出一段时间的query特性,需root权限。
通过管道从stdin读取N条命令,直接分析
redis-cli-p6439monitor |head-n|./redis-faina.py
从一个文件中读取117773条命令,再分析
redis-cli-p6439monitor |head-n117773>/tmp/outfile.txt
./redis-faina.py/tmp/outfile.txt
其输出结果如下:
OverallStats
========================================
LinesProcessed 117773
Commands/Sec 11483.44
TopPrefixes(按key前缀统计)
========================================
friendlist 69945
followedbycounter 25419
followingcounter 10139
recentcomments 3276
queued 7
TopKeys(操作最频繁的key)
========================================
friendlist:
zzz:
1:
2 534
followingcount:
zzz 227
friendlist:
zxz:
1:
2 167
friendlist:
xzz:
1:
2 165
friendlist:
yzz:
1:
2 160
friendlist:
gzz:
1:
2 160
friendlist:
zdz:
1:
2 160
friendlist:
zpz:
1:
2 156
TopCommands(执行最多的命令)
========================================
SISMEMBER 59545
HGET 27681
HINCRBY 9413
SMEMBERS 9254
MULTI 3520
EXEC 3520
LPUSH 1620
EXPIRE 1598
CommandTime(microsecs)(命令执行时长)
========================================
Median 78.25
75% 105.0
90% 187.25
99% 411.0
HeaviestCommands(microsecs)(耗时最多的命令)
========================================
SISMEMBER 5331651.0
HGET 2618868.0
HINCRBY 961192.5
SMEMBERS 856817.5
MULTI 311339.5
SADD 54900.75
SREM 40771.25
EXEC 28678.5
SlowestCalls(最慢的命令)
========================================
3490.75 "SMEMBERS""friendlist:
zzz:
1:
2"
2362.0 "SMEMBERS""friendlist:
xzz:
1:
3"
2061.0 "SMEMBERS""friendlist:
zpz:
1:
2"
1961.0 "SMEMBERS""friendlist:
yzz:
1:
2"
1947.5 "SMEMBERS""friendlist:
zpz:
1:
2"
1459.0 "SISMEMBER""friendlist:
hzz:
1:
2""zzz"
1416.25 "SMEMBERS""friendlist:
zhz:
1:
2"
1389.75 "SISMEMBER""friendlist:
zzx:
1:
2""zzz"
从上面结果我们可以看到对Redis的操作规律,比如针对哪些key在进行操作,进行了什么操作,这些操作的效率如何等相关有用信息。
由于Redis的MONITOR也对性能有所影响,所以建议在使用时不要一直开启MONITOR来分析。
可以采用定时抽样一段时间来做样本分析。
5.10 创建主从服务器
5.10.1 配置主从服务器
方式可以有2种:
1 master->slave,2 master->slave->slave->slave..
一个集群可以包含最多4096个节点(主节点master和从节点slave),建议最多设置几百个节点
进入Redis安装目录,创建主从配置文件
cd
创建主从服务器工作目录及对应的配置、日志等目录,服务器目录创建规则
名称+编号+端口号
Master100_6379
主服务器
Slave101_6380
从服务器
对应Master100的从服务器
Master200_6381
主服务器
Slave201_6382
从服务器
对应Master200的从服务器
mkdirMaster100_6379Slave101_6380
mkdirMaster100_6379/confMaster100_6379/logMaster100_6379/data
mkdirSlave101_6380/confSlave101_6380/logSlave101_6380/data
复制配置文件到服务器的conf目录
cpredis.confMaster100_6379/conf/redis.conf
cpredis.conf Slave101_6380/conf/slave.conf
修改主服务器配置文件:
pidfile/redis/redis/Master100_6379/run/redis_Master100_6379.pid
port6379
logfile/redis/redis/Master100_6379/log/stdout.log
dbfilename/redis/redis/Master100_6379/data/dump.rdb
appendfilename/redis/redis/Master100_6379/log//appendonly.aof
修改从服务器配置文件:
pidfile/redis/redis/Slave101_6380/run/