Redis-5.0.7配置与优化(最新版实战!!!)
2019-12-10 18:22
871 查看
Redis概述
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
Redis优点
具有极高的数据读写速 支持丰富的数据类型 支持数据的持久化 原子性 支持数据备份
Redis配置文件(/etc/redis/6379.conf)bind: 监听的主机地址
port: 端口 daemonize yes: 启用守护进程 pidfile: 指定PID文件 loglevel notice: 日志级别 logfile: 指定日志文件
Redis安装部署
#安装编译环境 [root@localhost ~]# yum install gcc gcc-c++ make -y #远程挂载源码包 [root@localhost ~]# mount.cifs //192.168.142.1/redis /mnt Password for root@//192.168.142.1/redis: #解压源码包 [root@localhost ~]# cd /mnt [root@localhost mnt]# tar zxvf redis-5.0.7.tar.gz -C /opt #编译与安装 [root@localhost mnt]# cd /opt/redis-5.0.7/ [root@localhost redis-5.0.7]# make [root@localhost redis-5.0.7]# make PREFIX=/usr/local/redis/ install #建立服务命令软链接到系统 [root@localhost redis-5.0.7]# ln -s /usr/redis/bin/* /usr/local/bin/ #切入utils目录 [root@localhost redis-5.0.7]# cd /opt/redis-5.0.7/utils/ #执行启动脚本 [root@localhost utils]# ./install_server.sh #以下内容,默认回车即可 Welcome to the redis service installer This script will help you easily set up a running redis server Please select the redis port for this instance: [6379] Selecting default: 6379 Please select the redis config file name [/etc/redis/6379.conf] Selected default - /etc/redis/6379.conf Please select the redis log file name [/var/log/redis_6379.log] Selected default - /var/log/redis_6379.log Please select the data directory for this instance [/var/lib/redis/6379] Selected default - /var/lib/redis/6379 Please select the redis executable path [] /usr/local/redis/bin/redis-server #此处需手动指定扩展目录路径/usr/local/redis/bin/redis-server #使用进程控制启动服务 [root@localhost utils]# /etc/init.d/redis_6379 start Starting Redis server... #配置redis的6379.conf文件,追加监听地址 [root@localhost utils]# vim /etc/redis/6379.conf bind 127.0.0.1 192.168.142.136 #重启服务 [root@localhost utils]# /etc/init.d/redis_6379 restart Stopping ... Redis stopped Starting Redis server...
Redis常用命令演示
#连接本地数据库 [root@localhost utils]# /usr/local/redis/bin/redis-cli 127.0.0.1:6379> #连接远程数据库 [root@localhost utils]# redis-cli -h 192.168.142.136 -p 6379 192.168.142.136:6379> [root@localhost utils]# /usr/local/redis/bin/redis-cli #获取set命令帮助 127.0.0.1:6379> help set SET key value [expiration EX seconds|PX milliseconds] [NX|XX] summary: Set the string value of a key since: 1.0.0 group: string #存放数据 127.0.0.1:6379> set teacher wangmin OK #获取数据 127.0.0.1:6379> get teacher "wangmin" #查看当前数据库所有键 127.0.0.1:6379> keys * 1) "teacher" 2) "st" 3) "teacer" 4) "stu" 5) "student" #查看当前数据库中 127.0.0.1:6379> keys t* 1) "teacher" 2) "teacer" #查看当前数据库中以s开头后面包含任意一个及字符的键 127.0.0.1:6379> keys s? 1) "st" #查看当前数据库中以s开头后面包含任意二个及字符的键 127.0.0.1:6379> keys s?? 1) "stu" #判断键值是否存 127.0.0.1:6379> exists stu (integer) 1 #返回int值为1,则表示键值存在 127.0.0.1:6379> exists std (integer) 0 #返回int值为0,则表示键值不存在 #删除当前数据库的指定key 127.0.0.1:6379> del st (integer) 1 #获取可以对应的value值类型 127.0.0.1:6379> type stu string #对已有的可以进行重命名覆盖 127.0.0.1:6379> rename student stud OK 127.0.0.1:6379> get stud "yuanyuan" #对已有的可以进行重命名不覆盖 127.0.0.1:6379> renamenx stud st (integer) 1 127.0.0.1:6379> get st "yuanyuan" #查看当前数据库中key的数目 127.0.0.1:6379> dbsize (integer) 4
redis-benchmark测试工具
-h:指定服务器主机名 -p:指定服务器端口 -C:指定并发连接数 -n: 指定请求数 -d:以字节的形式指定SET/GET值的数据大小 -q:强制推出redis。仅显示query/sec值
1.向IP地址为192.168.142.136端口为6379的redis服务器发送100个并发连接与100000个请求测试性能
[root@localhost utils]# /usr/local/redis/bin/redis-benchmark -h 192.168.142.136 -p 6379 -c 100 -n 100000 ... #主要查看set和get性能参数 ====== SET ====== 100000 requests completed in 1.03 seconds 100 parallel clients 3 bytes payload keep alive: 1 93.23% <= 1 milliseconds 99.09% <= 2 milliseconds 99.82% <= 3 milliseconds 100.00% <= 3 milliseconds 96993.21 requests per second ====== GET ====== 100000 requests completed in 1.05 seconds 100 parallel clients 3 bytes payload keep alive: 1 92.05% <= 1 milliseconds 99.12% <= 2 milliseconds 99.75% <= 3 milliseconds 99.90% <= 7 milliseconds 99.93% <= 8 milliseconds 100.00% <= 8 milliseconds 94966.77 requests per second ...
2.测试存取大小为100字节的数据包的性能
[root@localhost utils]# /usr/local/redis/bin/redis-benchmark -h 192.168.142.136 -p 6379 -d 100 ... #主要查看set和get性能参数 ====== SET ====== 100000 requests completed in 1.05 seconds 50 parallel clients 100 bytes payload keep alive: 1 99.17% <= 1 milliseconds 99.79% <= 2 milliseconds 100.00% <= 2 milliseconds 95328.88 requests per second ====== GET ====== 100000 requests completed in 1.02 seconds 50 parallel clients 100 bytes payload keep alive: 1 99.29% <= 1 milliseconds 99.70% <= 2 milliseconds 100.00% <= 2 milliseconds 97751.71 requests per second ...
Redis多数据库操作
Redis支持多数据库,默认支持16个数据库,0-15命名,多数据库相互独立,互不干扰
多数据库常用命令
#多数据库间切换 #默认在第一个数据库中 127.0.0.1:6379> select 10 OK 127.0.0.1:6379[10]> select 15 OK 127.0.0.1:6379[15]> #多数据库间移动数据 127.0.0.1:6379> move st 3 (integer) 1 #切换数据库并查看键值 127.0.0.1:6379> select 3 OK 127.0.0.1:6379[3]> keys * 1) "st" #清除数据库内数据 127.0.0.1:6379[3]> flushdb OK 127.0.0.1:6379[3]> keys * (empty list or set)
Redis持久化
持久化概述
Redis是运行在内存中,内存中的数据断电丢失,为了能够重用Redis数据,或者防止系统故障,我们需要将Redis中的数据写入到磁盘空间中,即持久化
持久化分类
●RDB方式:创建快照的方式获取某- -时刻Redis中所有数据的副本 ●AOF方式:将执行的写命令写到文件的末尾,以日志的方式来记.录数据的变化
RDB持久化
Redis的默认持久化方式 默认文件名dump.rdb 触发条件 ●在指定的时间间隔内,执行指定次数的写操作(配置文件控制) ●执行save或者是bgsave (异步) 命令 ●执行flushall命令,清空数据库所有数据 ●执行shutdown命令,保证服务器正常关闭且不丢失任何数据 优缺点 ●适合大规模的数据恢复 ●如果业务对数据完整性和一致性要求不高,RDB是很好的选择 ●数据的完整性和一致性不高 ●备份时占用内存
配置RDB持久化
[root@localhost utils]# vim /etc/redis/6379.conf #900秒之内至少一次写操作 save 900 1 #300秒之内至少发生10次写操作 save 300 10 #60秒之内发生至少10000次写操作 save 60 10000 #只要满足其一都会触发快照操作,注释所有的save项表示关闭RDB #RDB文件名称 dbfilename dump.rdb #RDB文件路径 dir /var/lib/redis/6379 #开启压缩功能 rdbcompression yes
AOF持久化
Redis默认不开启 弥补RDB的不足(数据的不一致性) 采用日志的形式来记录每个写操作,并追加到文件中 Redis重启会根据日志文件的内容将写指令从前到后执 行一次以完成数据的恢复工作
配置AOF持久化
[root@localhost utils]# vim /etc/redis/6379.conf #开启AOF持久化 appendonly yes #AOF文件名称 appendfilename "appendonly.aof" #always:同步持久化,每次发生数据变化会立刻写入磁盘 # appendfsync always #everysec:默认推荐,每秒异步记录次(默认值) appendfsync everysec #no:不同步,交给操作系统决定如何同步 # appendfsync no #忽略最后一条可能存在问题的指令 aof-load-truncated yes
AOF的重写机制
AOF的工作原理是将写操作追加到文件中,文件的冗余内容会越来越多 当AOF文件的大小超过所设定的阈值时,Redis就会对AOF文件的内容压缩
AOF重写的原理
Redis会fork出一条新进程,读取内存中的数据(并没有读取旧文件),并重新写到一个临时文件中,最后替换旧的aof文件
AOF的重写配置
[root@localhost utils]# vim /etc/redis/6379.conf #在日志进行BGREWRITEAOF时, 如果设置为yes表示新写操作不进行同步fsync, #只暂存在缓冲区里,避免造成磁盘I0操作冲突,等重写完成后在写入。redis中默认为no no-appendfsync-on-rewrite no #当前AOF文件大小是上次日志重写时AOF文件大小两倍时,发生BGREWRITEAOF操作 auto-aof-rewrite-percentage 100 #当前AOF文件执行BGREWRITEAOF命令的最小值, #避免刚开始启动Reids时由于文件尺寸较小导致频繁的BGREWRITEAOF auto-aof-rewrite-min-size 64mb
Redis性能管理
查看redis内存使用
[root@localhost utils]# /usr/local/redis/bin/redis-cli 127.0.0.1:6379> info memory # Memory used_memory:11767592 used_memory_human:11.22M #内存使用率 used_memory_rss:23867392 used_memory_rss_human:22.76M used_memory_peak:24877056 used_memory_peak_human:23.72M used_memory_peak_perc:47.30% used_memory_overhead:841518 used_memory_startup:791416 used_memory_dataset:10926074 used_memory_dataset_perc:99.54% allocator_allocated:12177712 allocator_active:12488704 allocator_resident:19542016 total_system_memory:1911832576 total_system_memory_human:1.78G used_memory_lua:37888 used_memory_lua_human:37.00K used_memory_scripts:0 used_memory_scripts_human:0B number_of_cached_scripts:0 maxmemory:0 maxmemory_human:0B maxmemory_policy:noeviction allocator_frag_ratio:1.03 allocator_frag_bytes:310992 allocator_rss_ratio:1.56 allocator_rss_bytes:7053312 rss_overhead_ratio:1.22 rss_overhead_bytes:4325376 mem_fragmentation_ratio:2.04 #内存碎片率 mem_fragmentation_bytes:12140824 mem_not_counted_for_evict:0 mem_replication_backlog:0 mem_clients_slaves:0 mem_clients_normal:49694 mem_aof_buffer:0 mem_allocator:jemalloc-5.1.0 active_defrag_running:0 lazyfree_pending_objects:0
相关文章推荐
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- Redis实战配置(三)
- ELK最新版实战配置检索nginx日志
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- Redis 性能优化 配置说明
- PHP优化06 优化实战XCACHE配置
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- 项目实战:LAMP环境+Xcache+Redis,另附Memcached配置。
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- redis配置优化(记一次线上redis问题排查)
- redis 集群配置实战
- Redis配置讲解及实战
- linux下redis安装配置及redis常用命令(实战详细版)
- redis 集群热备自动切换sentinel配置实战
- 实战Nginx+mysql+PHP(FastCGI)的安装、配置与优化(原理篇)
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- redis性能优化之redis.cnf配置参数