设为首页 收藏本站
查看: 680|回复: 0

[经验分享] 服务器架设篇-----CentOS安装Redis-2.8.19

[复制链接]

尚未签到

发表于 2015-7-21 11:34:09 | 显示全部楼层 |阅读模式
  参考文章


  • redis.io redis.cn
  • Redis安装及主从配置
  扩展阅读:


  • Redis+PHP扩展的安装和Redis集群的配置 与 PHP负载均衡开发方案
  • 归档Redis在Windows,linux平台下的安装配置
  检查下面依赖是否安装,如果没有要先安装,不然会有异常。



[iyunv@webserver ~]# yum installgcc-c++
[iyunv@webserver ~]# yum install -y tcl

  1、安装 http://redis.io/download



[iyunv@webserver ~]# wget http://download.redis.io/releases/redis-2.8.19.tar.gz
[iyunv@webserver ~]# tar xzf redis-2.8.19.tar.gz       # 解压文件
[iyunv@webserver ~]# mv redis-2.8.19 /usr/local/redis  #
[iyunv@webserver ~]# cd /usr/local/redis               # 进入redis目录
[iyunv@webserver ~]# make                              # 编译
[iyunv@webserver ~]# make install                      # 安装
  安装完之后,会在src目录下生成几个可执行文件,分别是

mkreleasehdr.sh     #
redis-benchmark     # Redis性能测试工具,测试Redis在当前系统下的读写性能
redis-check-aof     # 数据修复
redis-check-dump    # 检查导出工具
redis-cli           # 进入Redis客户端的,可以用telnet根据其纯文本协议来操作
redis-sentinel      #
redis-server        # 启动Redis服务的

  Redis配置文件

[iyunv@webserver ~]# mkdir -p /usr/local/redis/bin               # 设置配置文件路径
[iyunv@webserver ~]# cp /usr/local/redis/redis.conf /usr/local/redis/bin #
[iyunv@webserver ~]# mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel redis-server /usr/local/redis/bin
[iyunv@webserver ~]# vi /usr/local/redis/bin/redis.conf          # 修改配置文件
仅修改: daemonize yes    #这里只简单的将daemonize参数设置为yes,目的是将Redis服务设置为后台开启,这样服务开启后就不会占用当前session了
  redis.conf的主要配置参数

daemonize yes                           # 是否以后台daemon方式运行,默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yes
pidfile /usr/local/redis/var/redis.pid  # pid文件位置,默认会把pid文件放在/var/run/redis.pid,当运行多个redis服务时,需要指定不同的pid文件和端口
bind        #指定Redis只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求,在生产环境中最好设置该项。
port 6379                               # 监听的端口号
timeout 300                             # 设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接
loglevel debug                          # log信息级别,分为debug|verbose|notice|warning4级。生产环境下一般开启notice。
logfile /usr/local/redis/var/redis.log  # log文件位置,默认使用标准输出,即打印在命令行终端的窗口上
databases 16     # 开启数据库的数量,可以使用SELECT 命令来切换数据库。默认使用的数据库是0
save * *   #保存快照的频率,第一个*表示多长时间,第二个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
save 900 1       # 在900秒之内有1个keys发生变化时
save 300 10      # 在300秒之内有10个keys发生变化时
save 60 10000    # 在60秒之内有10000个keys发生变化时
rdbcompression yes          # 在进行镜像备份时,是否进行压缩
dbfilename dump.rdb         # 镜像备份文件的文件名(只是文件名,不包括目录)
dir /usr/local/redis/var/   # 数据快照的保存目录(这个是目录)
slaveof      #设置该数据库为其他数据库的从数据库
masterauth        #当主数据库连接需要密码验证时,在这里指定
requirepass              #设置客户端连接后进行任何其他指定前需要使用的密码。警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解
maxclients 128           #限制同时连接的客户数量,默认不限制。当连接数超过这个值时,redis将不再接收其他连接请求,客户端尝试连接时将收到error信息
maxmemory         #设置redis能够使用的最大内存。当内存满了的时候,如果还接收到set命令,redis将先尝试剔除设置过expire信息的key,而不管该key的过期时间还没有到达。在删除时,将按照过期时间进行删除,最早将要被过期的key将最先被删除。如果带有expire信息的key都删光了,那么将返回错误。这样,redis将不再接收写请求,只接收get请求。maxmemory的设置比较适合于把redis当作于类似memcached的缓存来使用。
appendonly no           # 是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。默认情况下,redis会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁,如果发生诸如拉闸限电、拔插头等状况,那么将造成比较大范围的数据丢失。所以redis提供了另外一种更加高效的数据库备份及灾难恢复方式。开启append only模式之后,redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态。但是这样会造成appendonly.aof文件过大,所以redis还支持了BGREWRITEAOF指令,对appendonly.aof进行重新整理。所以我认为推荐生产环境下的做法为关闭镜像,开启appendonly.aof,同时可以选择在访问较少的时间每天对appendonly.aof进行重写一次。
appendfsync always      # 设置对appendonly.aof文件进行同步的频率,(三个选项,分别是always表示每次有写操作都进行同步、everysec表示对写操作进行累积,每秒同步一次、no 不调用fsync等待系统自己同步)
vm-enabled              # 是否开启虚拟内存支持,默认值为no。因为redis是一个内存数据库,而且当内存满的时候,无法接收新的写请求,所以在redis 2.0中,提供了虚拟内存的支持。但是需要注意的是,redis中,所有的key都会放在内存中,在内存不够时,只会把value值放入交换区。这样保证了虽然使用虚拟内存,但性能基本不受影响,同时,你需要注意的是你要把vm-max-memory设置到足够来放下你的所有的key
vm-swap-file             # 设置虚拟内存的交换文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享
vm-max-memory 0          # 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的 (Redis的索引数据就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0
vm-page-size 32          #
vm-pages 134217728       #
vm-max-threads 4         #
glueoutputbuf yes        # 把小的输出缓存放在一起,以便能够在一个TCP packet中为客户端发送多个响应,具体原理和真实效果我不是很清楚。所以根据注释,你不是很确定的时候就设置成yes
hash-max-zipmap-entries 64   #在redis 2.0中引入了hash数据结构。当hash中包含超过指定元素个数并且最大的元素没有超过临界时,hash将以一种特殊的编码方式(大大减少内存使用)来存储,这里可以设置这两个临界值
hash-max-zipmap-value 512    #
activerehashing          # 是否重置Hash表,开启之后,redis将在每100毫秒时使用1毫秒的CPU时间来对redis的hash表进行重新hash,可以降低内存的使用。当你的使用场景中,有非常严格的实时性需要,不能够接受Redis时不时的对请求有2毫秒的延迟的话,把这项配置为no。如果没有这么严格的实时性要求,可以设置为yes,以便能够尽可能快的释放内存
shareobjects no          #
shareobjectspoolsize 1024#

  注意:Redis官方文档对VM的使用提出了一些建议:


  • 当你的key很小而value很大时,使用VM的效果会比较好.因为这样节约的内存比较大.
  • 当你的key不小时,可以考虑使用一些非常方法将很大的key变成很大的value,比如你可以考虑将key,value组合成一个新的value.
  • 最好使用linux ext3 等对稀疏文件支持比较好的文件系统保存你的swap文件.
  • vm-max-threads这个参数,可以设置访问swap文件的线程数,设置最好不要超过机器的核数.如果设置为0,那么所有对swap文件的操作都是串行的.可能会造成比较长时间的延迟,但是对数据完整性有很好的保证.
  启动



[iyunv@webserver ~]# /usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
[iyunv@webserver ~]# ps -ef | grep redis                # 查看启动
[iyunv@webserver ~]# vi /etc/rc.local                                 # 将Redis作为 Linux 服务随机启动
/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf  #新增一行

  使用



[iyunv@webserver ~]# /usr/local/redis/bin/redis-cli
>set name carey
OK
>get name
carey

[iyunv@webserver ~]# /usr/local/redis/bin/redis-cli shutdown  # 关闭客户端
    如果端口变化可以指定端口 /usr/local/redis/bin/redis-cli -p 6380 shutdown

  保存/备份


  数据备份可以通过定期备份该文件实现。因为redis是异步写入磁盘的,如果要让内存中的数据马上写入硬盘可以执行如下命令:

[iyunv@webserver ~]# /usr/local/redis/bin/redis-cli save
或者(指定端口)
[iyunv@webserver ~]# /usr/local/redis/bin/redis-cli -p 6380 save
  注意,以上部署操作需要具备一定的权限,比如复制和设定内核参数等。
  执行redis-benchmark命令时也会将内存数据写入硬盘。
  自启动


  从此处下载脚本 下载 声明:此脚本来自网络,经过简单修改,已测,可用。
  用这个脚本管理之前,需要先配置下面的内核参数,否则Redis脚本在重启或停止redis时,将会报错,并且不能自动在停止服务前同步数据到磁盘上:

[iyunv@webserver ~]# vi /etc/sysctl.conf
vm.overcommit_memory = 1

然后应用生效:
[iyunv@webserver ~]# sysctl -p
然后增加服务并开机自启动:
[iyunv@webserver ~]# chmod 755 /etc/init.d/redis
[iyunv@webserver ~]# chkconfig --add redis
[iyunv@webserver ~]# chkconfig --level 345 redis on
[iyunv@webserver ~]# chkconfig --list redis
  Redis主从配置


  参考文章:


  • http://www.iyunv.com/liuling/p/2014-4-19-02.html
  Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。
  按上面步骤安装Savle
  修改配置文件

[iyunv@webserver ~]# vi /usr/local/redis/bin/redis.conf
slaveof 192.168.1.MasterIP 6379  # 映射到master服务器上
masterauth admin                 # 如果master设置了验证密码,还需配置masterauth

  配置完之后启动slave的Redis服务
  异常



zmalloc.h:51:31:error: jemalloc/jemalloc.h: No such file or directory
异常原因:一些编译依赖或原来编译遗留出现的问题
解决方案:make distclean。清理一下,然后再make。
在make成功以后,需要make test。在make test出现异常。
couldn'texecute "tclsh8.5": no such file or directory
异常原因:没有安装tcl
如果不先安装tcl在编译redis的时候,执行make test 会报以下错误,这步也可以省略,不执行make test 直接执行make install 对redis的启动和关闭没有什么影响。
[iyunv@localhostredis]# make test
cd src &&make test
make[1]: Enteringdirectory `/usr/local/webserver/redis/src'
You need tcl 8.5 ornewer in order to run the Redis test
make[1]: *** [test]Error 1
make[1]: Leavingdirectory `/usr/local/webserver/redis/src'
make: *** [test]Error 2

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-89036-1-1.html 上篇帖子: redis java对象操作 下篇帖子: c# 使用protobuf格式操作 Redis
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表