首页
技术分享
实用工具 发布文章 新浪微博 Github

本文详细介绍redis单机单实例安装与配置,服务及开机自启动。

一.安装redis

1)下载redis安装包

可去官网http://redis.io ,也可通过wget命令:

1
wget http://download.redis.io/redis-stable.tar.gz

2)解压

1
tar –zxvf redis-stable.tar.gz

3) 编译、安装

1
cd redis-stable

1
make

如果提示 gcc command 不识别,请自行安装 gcc;

如果提示couldn’t execute tcl : no such file or dicrectory,请自行安装tcl;

如果提示

请执行 make distclean,然后再 make

Make成功之后,会在src目录下多出一些文件,如下

可手动拷贝redis-server、redis-cli、redis-check-aof、redis-check-dump等至/usr/local/bin目录下,也可执行make install,此处执行make install

可查看,/usr/local/bin 下已有这些文件。

注意:若此时执行 redis-server –v (查看版本命令),若提示 redis-server command not found,则需要将 /usr/local/bin 目录加到环境变量,如何添加,此处不做详细介绍,可查看修改 /etc/profile,(查看环境变量命令:echo $PATH)

正常如下

至此,redis安装完成,接着配置。

二.修改配置文件.conf

1) 创建配置文件目录,dump file 目录,进程pid目录,log目录等

配置文件一般放在 /etc/ 下,创建redis目录

1
2
3
cd /etc/

mkdir redis

ll 查看创建的redis目录

~

dump file、进程pid、log目录等,一般放在 /var/ 目录下

1
2
3
4
5
6
7
cd /var/

mkdir redis

cd redis

mkdir data log run

至此,目录创建完毕

2) 修改配置文件,配置参数

首先拷贝解压包下的 redis.conf 文件至 /etc/redis

查看 /etc/redis/redis.conf

1
2
3
cd /etc/redis/

ll

打开redis.conf文件

修改端口(默认6379)

修改pid目录为新建目录

修改dump目录为新建目录

修改log存储目录为新建目录

3) 持久化

默认rdb,可选择是否开启aof,若开启,修改配置文件 appendonly

4) 启动redis,查看各目录下文件

查看进程

redis已启动

查看dump, log, pid等

发现只有日志,没有dump和pid信息,是因为当前redis服务仍然是console模式运行的,且没有数据存储操作

停止redis服务,修改配置文件使得redis在 background 运行

改成yes,保存,重启redis服务

1
2
redis-cli shutdown
redis-server /etc/redis/redis.conf

查看pid信息,如下

查看dump信息

若配置了aof持久化方式,data目录下还会有aof的相关文件

5) 客户端连接redis

默认端口6379

6) 至此,redis基础配置完毕,若有其他相关配置调整,可查找文档再修改

三.服务及开机自启动

1) 创建redis启动脚本

拷贝解压包下 utils下redis 启动脚本至 /etc/init.d/

1
cp redis_init_script /etc/init.d/

修改脚本名称(也可不修改)为redis

查看 ll

修改脚本pid及conf路径为实际路径

生产环境下,配置时,配置文件、pid等最好加上端口标识,以便区分,如

保存

退出

至此,在 /etc/init.d/ 目录下,已经可以通过 service redis start/stop 命令启动和关闭redis

若在其他目录下,不能够使用这2个命令,请继续配置2),添加权限

2) 给启动脚本添加权限

1
chmod +x /etc/init.d/redis

实际命令,根据目录的不同,会不一样

相应的删除权限是

1
chmod –x /etc/init.d/redis

如果需要在开机的时候,redis服务自动启动,可继续3)

3) 设置自启动

1
chkconfig redis on

如果运行报错,提示

是因为没有在启动脚本里加入redis启动优先级信息,可添加如下

再次执行chkconfig redis on,成功

至此,自启动配置完毕

redius 一些小优化

1) 当业务场景不需要数据持久化时,关闭所有的持久化方式可以获得最佳的性能以及最大的内存使用量。

修改redis配置文件,redis.conf。

1.注释掉原来的持久化规则

1
2
3
#save 900 1
#save 300 10
#save 60 10000

2.设置为空

1
save ""

然后重启redis服务即可。

2) 不要让你的redis所在机器物理内存使用超过实际内存总理的3/5。

redis.confmaxmemory 选项,该选项是告诉redis当使用了多少物理内存后就开始拒绝后续的写入请求,该参数能很好的保护redis不会因为使用了过多的物理内存后而导致swap,最终严重影响性能甚至崩溃。

已本机为例,本机内存为16G,业务需求5G redisu, 设置如下:

1
2
3
maxmemory 5368709120
或者
maxmemory 5gb

maxmemory 参数为 <bytes>, 计算公式 5G 1024 1024 * 1024 或者直接写 5gb

设置了maxmemory的选项,redis内存使用达到上限。可以通过设置LRU算法来删除部分key,释放空间。默认是按照过期时间的,如果set时候没有加上过期时间就会导致数据写满maxmemory。

如果不设置maxmemory或者设置为0,64位系统不限制内存,32位系统最多使用3GB内存。

LRU是Least Recently Used 近期最少使用算法。

如果设置了 maxmemory,一般都要设置过期策略。打开Redis的配置文件有如下描述,Redis有六种过期策略:

  • volatile-lru -> 根据LRU算法生成的过期时间来删除。
  • allkeys-lru -> 根据LRU算法删除任何key。
  • volatile-random -> 根据过期设置来随机删除key。
  • allkeys->random -> 无差别随机删。
  • volatile-ttl -> 根据最近过期时间来删除(辅以TTL)
  • noeviction -> 谁也不删,直接在写操作时返回错误。

那么打开配置文件,添加如下一行,使用volatile-lru的过期策略:

1
maxmemory-policy volatile-lru

保存文件退出,重启redis服务。

3) info命令查看Redis内存使用情况

查找列出的信息中 used_memory 字段:

1
2
3
4
5
6
7
# Memory
used_memory:1324304
used_memory_human:1.26M
used_memory_rss:9826304
used_memory_rss_human:9.37M
used_memory_peak:1958208
used_memory_peak_human:1.87M

注意单位依然是 <bytes>,本机 redis 使用量为 1.26M

4) 开启允许外部机器访问redis

修改redis的配置文件,将所有bind信息全部屏蔽。

1
2
3
# bind 192.168.1.100 10.0.0.1
# bind 192.168.1.8
# bind 127.0.0.1

修改完成后,需要重新启动redis服务。

如果有防火墙相关配置需要开启redis相关端口。

5) 设置访问密码

修改redis的配置文件 requirepass 字段。

1
requirepass "uis.cc"

redis相关文件路径信息:(通过上面配置获得)

程序源路径: /temp/redis-3.2.4/
程序路径: /usr/local/bin/redis-server
配置文件路径: /etc/redis/redis.conf
pidfile路径: /var/redis/run/redis.pid
dump路径: /var/redis/data
logfile路径: /var/redis/log/redis.log
端口: 6379

客户端快速链接:redis-cli -h 10.10.10.10 -p 6379

服务方式启动 :service redis start/stop

路径方式启动:
启动redis命令: redis-server /etc/redis/redis.conf
停止redis命令: redis-cli shutdown

相关文章:

http://blog.csdn.net/ludonqin/article/details/47211109
https://my.oschina.net/dxqr/blog/711578
http://blog.csdn.net/tanzhang78/article/details/52073440