博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 下 Redis 安装详解
阅读量:4197 次
发布时间:2019-05-26

本文共 2740 字,大约阅读时间需要 9 分钟。

redis作为NoSQL数据库的一种应用,响应速度和命中率上还是比较高效的。项目中需要用集中式可横向扩展的缓存框架,做了一点调研,即便redis、memcached存在效率上的差异(具体比较参考http://timyang.net/data/mcdb-tt-redis/),但其实都能满足目前项目的需求;但是redis还是比较风骚的,支持链表和集合操作,支持正则表达式查找key,目前项目缓存的结果大多是链表,如果链表新增或者修改数据的话,redis就体现出了极大的优势(memcached只能重新加载链表,redis可以对链表新增或者修改)


1:下载redis

下载地址 http://code.google.com/p/redis/downloads/list

推荐下载redis-1.2.6.tar.gz,之前这个版本同事已经有成功安装运行的经验,redis-2.0.4.tar.gz 这个版本我安装后无法操作缓存数据,具体原因后续再说


2:安装redis

下载后解压 tar zxvf redis-1.2.6.tar.gz 到任意目录,例如/usr/local/redis-1.2.6


解压后,进入redis目录

    cd /usr/local/redis-1.2.6  

    make  


拷贝文件

cp redis.conf /etc/ 这个文件时redis启动的配置文件

cp redis-benchmark redis-cli redis-server /usr/bin/ #这个倒是很有用,这样就不用再执行时加上./了,而且可以在任何地方执行


设置内存分配策略(可选,根据服务器的实际情况进行设置)

/proc/sys/vm/overcommit_memory

可选值:0、1、2。

0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。

1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。

2, 表示内核允许分配超过所有物理内存和交换空间总和的内存


值得注意的一点是,redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用的内存为8G,这个时候也要同样分配8G的内存给child,如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)


开启redis端口,修改防火墙配置文件

    vi /etc/sysconfig/iptables  


加入端口配置

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT  


重新加载规则

    service iptables restart   


3:启动redis服务

    [root@Architect redis-1.2.6]# pwd  

    /usr/local/redis-1.2.6  

    [root@Architect redis-1.2.6]# redis-server /etc/redis.conf  


查看进程,确认redis已经启动


    [root@Architect redis-1.2.6]# ps -ef | grep redis  

    root       401 29222  0 18:06 pts/3    00:00:00 grep redis  

    root     29258     1  0 16:23 ?        00:00:00 redis-server /etc/redis.conf  


如果这里启动redis服务失败,一般情况下是因为redis.conf文件有问题,建议检查或找个可用的配置文件进行覆盖,避免少走弯路,这里建议,修改redis.conf,设置redis进程为后台守护进程


    # By default Redis does not run as a daemon. Use 'yes' if you need it.  

    # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.  

    daemonize yes  


4:测试redis

    [root@Architect redis-1.2.6]# redis-cli  

    redis> set name songbin  

    OK  

    redis> get name   

    "songbin"  


5:关闭redis服务

    redis-cli shutdown  


redis服务关闭后,缓存数据会自动dump到硬盘上,硬盘地址为redis.conf中的配置项dbfilename dump.rdb所设定

强制备份数据到磁盘,使用如下命令


    redis-cli save 或者 redis-cli -p 6380 save(指定端口)

PS:

不指定配置文件,redis-server启动时,会有这个提示
“no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf”



1、后台守护进程形式启动,修改redis.conf 中 daemonize 改成yes
2、日志文件,修改redis.conf 中 logfile



默认不是以守护进程启动,默认日志是直接写到控制台上。
之前我用的时候没有改那两个值,我是直接 nohup ./redis-server ./redis.conf > filelog.log &

不指定配置文件,redis-server启动时,会有这个提示
“no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf”



1、后台守护进程形式启动,修改redis.conf 中 daemonize 改成yes
2、日志文件,修改redis.conf 中 logfile



默认不是以守护进程启动,默认日志是直接写到控制台上。
之前我用的时候没有改那两个值,我是直接 nohup ./redis-server ./redis.conf > filelog.log &

转载地址:http://gyzli.baihongyu.com/

你可能感兴趣的文章
JavaScript基础教程之querySelectorAll( )方法遇到的问题
查看>>
《JavaScript高级程序设计》学习笔记(一)JavaScript简介
查看>>
JavaScript基础教程之字符串对象
查看>>
JavaScript基础教程之数学对象
查看>>
JavaScript基础教程之数组对象
查看>>
《JavaScript高级程序设计》学习笔记(三)基本概念
查看>>
关于bootstrap-table冻结列生成多个冻结表头和表格主体的问题
查看>>
《CSS世界》学习笔记(一)
查看>>
swiper组件如何自定义分页符和前进后退按钮
查看>>
jQuery中attr()与prop()的区别
查看>>
spring JPA动态查询
查看>>
Node.js 学习笔记(一)
查看>>
U3D框架搭建(一):订阅者模式
查看>>
U3D使用:带有骨骼信息的节点无法旋转、位移
查看>>
C#使用的一些小技巧
查看>>
addbehaviour 的无法执行
查看>>
七,laya发布的问题
查看>>
游戏引擎学习阶段总结
查看>>
俄罗斯方块Laya源码(非商用未拆分无架构)
查看>>
U3D将场景数据存为表格
查看>>