Redis教程(一)Redis 5 编译安装部署教程

TangLu Redis 2019-10-15 6590 0

一、Redis介绍

Redis是一种高性能、高可用、高可扩展,并且支持丰富的数据类型的缓存服务。从数据类型来说比仅支持字符串类型数据的Memcached支持更为丰富的数据类型,比如string、list、hash、set;从高可用来说Redis支持主从架构,在主从架构上还有sentinel哨兵模式和集群模式,可以实现主从故障自动转移,而且Redis支持数据持久化,可以把内存中的数据保存在磁盘中,真正的做到了高可用。从高性能来说,虽然Redis是基于单线程工作(单线程意味着Redis一次只能一条命令,所以需要避免在线上主库操作一些长命令,如keys、flushall\flushdb等),但是不代表它性能就很差,单线程并不是Redis的瓶颈所在,经过测试发现Redis平均每秒大概可以处理50W次并发请求,存储100万个small key其内存消耗也仅仅100M左右。Redis的应用场景主要包含了一些缓存系统、计数器、排行榜、消息队列、实时系统等,基本上社交媒体的功能都可以通过Redis实现,但是一些大容量的缓存服务使用Redis就会比较不合适,建议使用基于磁盘的MongoDB。


二、编译安装Redis

Redis下载的官方网站是http://redis.io/download/所有历史版本页面:http://download.redis.io/releases/。下载好需要的安装包后解压并安装,该方法适用3.x至6.x

cd /usr/local/src/
wget https://download.redis.io/releases/redis-5.0.10.tar.gz 
tar zxf redis-5.0.10.tar.gz
cd redis-5.0.10
yum install gcc jemalloc -y  #Redis依赖C语言的环境,所以先安装gcc编译环境和jemalloc内存分配器,在处理内存碎片化上优于默认的内存分配器libc

make 
make install  #make的时候安装已经完成,make install会把redis命令放在/usr/local/bin下
# make MALLOC=/usr/lib64/libjemalloc.so.1  #如果报错没找到jemalloc文件可以这样手动指定,通过rpm -ql jemalloc可以查看so文件路径


三、服务器内核参数调整

1、调整内存分配策略,减少OOM

echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
sysctl vm.overcommit_memory=1


2、关闭THP,减少延迟

echo never > /sys/kernel/mm/transparent_hugepage/enabled   #该命令执行后还需写入到/etc/rc.local


四、Redis配置

1、redis脚本介绍

· redis-server:Redis服务启动脚本
· redis-cli:Redis客户端命令行操作工具
· redis-benchmark:Redis压力测试工具,测试Redis在当前系统下的读写性能

redis-benchmark -c 100 -n 10000 -r 10000  #100个客户端总共发起10000个请求,并且随机生成大量key,否则只有几个key


· redis-check-aof:对aof数据文件检查修复工具
· redis-check-dump:检查导出工具


redis1.jpg


2、启动Redis服务

· 直接运行redis-server脚本可以使用默认参数来启动服务,但是启动服务后会有警告信息“Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf”,这个是说明没有指定配置文件

 redis-server


· 指定配置文件启动redis

 redis-server  /usr/local/redis/etc/redis.conf


· 指定配置文件并后台启动redis

vi /usr/local/redis/etc/redis.conf
daemonize yes    #此项改为yes


5、使用客户端连接Redis测试,默认端口为6379,如果能正常连接上就代表一切成功了

redis2.jpg


6、登录Redis后输入help命令可以查看帮助,要详细查看指定类型数据的子命令有哪些,可以用@符号来指定组名,如“help @string”“help @list”。也可以用tab来自动补全

./redis-cli 
127.0.0.1:6379>


7、关闭redis最好的方法是连接上客户端后运行shutdown,不建议直接kill


8、另外redis的日志中会有一些优化建议,可以在运行后根据日志修改系统配置企业微信截图_20180831094127.png

评论