本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • Redis
  • Redis教程(一)——Redis 3.0.4编译安装与基本配置教程

Redis教程(一)——Redis 3.0.4编译安装与基本配置教程

发布:TangLu2018-8-31 15:29分类: Redis 标签: redis nosql

Redis和Memcached相似也是一种数据缓存服务,但是相比Memcached来说有更多的功能,Redis支持更为丰富的数据类型,比如string、list、hash、set;Redis支持数据持久化,可以把内存中的数据保存在磁盘中;支持sentinel哨兵机制进行主从故障转移实现高可用;从3.0开始支持Cluster。Redis不如Memcached的地方就是只能单线程工作,但是也不是说Redis性能就很差,单线程并不是Redis的瓶颈所在,测试得知Redis平均每秒大概可以处理50W次并发请求,存储100万个small key其内存消耗也仅仅100M左右。


Redis部署规范与标准参考:

安装目录参考:/usr/local/redis

数据统一存放在一个大目录中:/redis_data,每个实例放在独立的目录:redis6379、redie6380

配置文件命名参考:redis6379.conf

主从分开部署且统一端口号,如A服务器部署主服务,B服务器部署从服务,端口统一为6379或其他的,但不要各是各的

剩余内存大于总内存的20%

Redis实例数量小于CPU核数,因为Redis是单线程工作

磁盘使用率小于80%

CPU空闲率大于30%

IOWAIT小于2



一、下载与安装Redis

官方网站:http://redis.io/download/所有历史版本:http://download.redis.io/releases/。下载好需要的安装包后解压并安装,安装结束后会自动添加redis所需要的命令到环境变量中

tar zxf  redis-3.0.4.tar.gz
cd  redis-3.0.4
make && make install #不需要configure

也可以使用jemalloc内存分配器,并指定安装路径:

yum install jemalloc 
make prefix=/usr/local/redis MALLOC=/usr/lib64/libjemalloc.so.1  #通过rpm -ql可以查到so文件路径


无jemalloc内存分配器:

make prefix=/usr/local/redis malloc=libc  #目前Redis默认的内存分配器是jemalloc,它在解决内存碎片化的问题上优于libc。由于系统没有jemalloc,所以手动指定内存分配器为libc完成安装。


二、配置与使用Redis

1、编译安装好Redis后,会在系统的环境变量中增加几个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”,这个是说明没有指定配置文件,指定下配置文件再次运行就不会有这个警告信息了

[root@linuxe bin]# ./redis-server  /usr/local/redis/etc/redis.conf

3、上一步操作后虽然没有警告信息了,但是Redis服务运行在了前台,解决这个问题的办法就是修改配置文件

[root@linuxe ~]# vi /usr/local/redis/etc/redis.conf
daemonize yes    #此项改为yes


4、再次指定配置文件启动服务,发现Redis服务启动在了后台,端口为6379(在redis.conf里可以指定)

redis2.jpg

5、使用客户端工具测试,如果能正常连接上就代表一切成功了,如果要查看帮助信息可以登录Redis后输入help命令,要详细查看指定类型数据的子命令有哪些,可以用@符号来指定组名,如“help @string”“help @list”。也可以用tab来自动补全

[root@linuxe bin]# ./redis-cli 
127.0.0.1:6379> 

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

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


三、Redis.conf配置文件常用选项介绍(Redis提供了60多个配置,这里只给出一些重要配置做解释,这些选项在启动redis服务时需要认真检查):

bind 0.0.0.0  #Redis服务监听本机所有IP,或者指定一个IP地址
daemonize yes  #是否作为后台服务启动,改为yes
port 6379  #监听端口
timeout  #客户端连接空闲超时时间
protected-mode=no  #关闭保护模式,否则非本地连接将被拒绝
loglevel  #日志级别
logfile  #日志文件路径
dir  #数据存放路径
database  16  #可以使用多少个数据库,使用select切换,默认在0号数据库,集群环境下也只能使用默认的0号数据库
slave-priority  #优先级,在哨兵模式中优先级低的从节点优先提升为主节点
maxmemory 4915mb  #redis占用的最大内存

#输入缓冲区限制,输入缓冲区过大主要是Redis的处理速度跟不上输入缓冲区的输入速度,并且输入缓冲区的命令包含了大量bigkey。还有一种情况就是Redis发生了阻塞,短期内不能处理命令,造成客户端输入的命令积压在了输入缓冲区,造成了输入缓冲区过大。执行info命令client_biggest_input_buf值变大需要关注这个


#客户端输出缓冲区限制,一旦发现内存抖动频繁,可能就是输出缓冲区过大。这里对normal普通客户端、slave客户端和订阅客户端进行限制,第一个数字是硬限制,一旦达到限制立即关闭客户端;后面的数字是软限制,达到限制并持续60秒就关闭客户端。执行info命令client_longest_output_list的值变大就需要关注这个
client-output-buffer-limit normal 0 0 0 
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60



关于redis最大内存的说明:
如果看到客户端提示command not allowed when used memory > 'maxmemory'的提示,代表当前redis服务使用内存已经达到设置的上限。根据Redis默认的删除算法,达到最大内存后redis对后续操作会直接返回错误。要设置删除算法的话需要修改maxmemory-policy这个选项的值,
Redis支持以下几种删除算法:

    volatile-lru:使用LRU算法删除设有ttl的key

    volatile-random:随机删除设有设置ttl的key

    volatile-ttl:删除ttl最小的key,前提是key有设置过期时间

    allkeys-lru:使用LRU算法在所有key中进行删除,LRU算法是删除使用次数最小的KEY

    allkeys-random:随机在所有key中进行删除

    noeviction:默认删除算法,不进行任何操作,直接返回错误

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《Redis教程(一)——Redis 3.0.4编译安装与基本配置教程
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-250.html  [生成短网址]

已有 0/3006 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~