CentOS7安装配置 Redis
- 下载源码
wget http://download.redis.io/releases/redis-4.0.12.tar.gz
; - 解压并进入到目录
tar xzf redis-4.0.12.tar.gz
、cd redis-4.0.12/
; - 创建
/usr/local/redis/ect
,然后编译到指定目录make PREFIX=/usr/local/redis install
目录,将redis.conf
复制过来
将 Redis 添加系统服务,执行 vim /usr/lib/systemd/system/redis-server.service
,内容如下
[Unit]
Description=The redis-server Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/var/run/redis.pid
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
WantedBy=multi-user.target
开启服务 systemctl start redis-server
设置为开机启动 `systemctl enable redis-server`
**修改 Redis 配置**
1. 修改数据保存路径,新建 `/usr/local/redis/data` 目录,设置 `dir` 为 这个路径;
2. RDB 和 AOF 持久化
默认的 RDB 是 `save 900 1 save 300 10 save 60 10000`,即 900 秒 1 次更改、300 秒 10 次更改、60 秒 10000 次更改,满足上述任一条件即可,使用默认值;
AOF 是默认关闭的,修改 `appendonly` 为 `yes`。更新条件有三种选择,是 `always` 表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)、`everysec` 表示每秒同步一次(折中,默认值)、`no` 表示等操作系统进行数据缓存同步到磁盘(快),使用默认值就好了;
二者是可以同时使用的,其它的相关配置就使用默认值了。
**修改数据淘汰策略**
最大占用内存 `maxmemory` 默认是注释的,设置为 512M,注意单位是 bytes ,所以值为 536870912;
Redis 共提供了 6 种超值后的数据淘汰策略,分别是
> volatile-lru:从设置了过期时间的数据集中,选择最近最久未使用的数据释放;
> allkeys-lru:从数据集中(包括设置过期时间以及未设置过期时间的数据集中),选择最近最久未使用的数据释放;
> volatile-random:从设置了过期时间的数据集中,随机选择一个数据进行释放;
> allkeys-random:从数据集中(包括了设置过期时间以及未设置过期时间)随机选择一个数据进行入释放;
> volatile-ttl:从设置了过期时间的数据集中,选择马上就要过期的数据进行释放操作;
> noeviction:不删除任意数据(但redis还会根据引用计数器进行释放),这时如果内存不够时,会直接返回错误。
这里设置 `maxmemory-policy` 为 `volatile-lru`。
redis安装过程中make遇到的问题
安装gcc:yum install gcc
再次执行:make install PREFIX=/usr/local/redis
如果仍然报错:
make[1]: *** [server.o] 错误 1make[1]: 离开目录“/usr/redis-6.0.1/src”make: *** [all] 错误 2server.c:2402:11: 错误:‘struct redisServer’没有名为‘assert_file’的成员 server.assert_file = "
解决办法:
[root@localhost redis-6.0.1]# gcc -v # 查看gcc版本
[root@localhost redis-6.0.1]# yum -y install centos-release-scl # 升级到9.1版本
[root@localhost redis-6.0.1]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
[root@localhost redis-6.0.1]# scl enable devtoolset-9 bash #以上为临时启用,如果要长期使用gcc 9.1的话:
[root@localhost redis-6.0.1]# echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
再次执行:make install PREFIX=/usr/local/redis
安装成功会出现:Hint: It's a good idea to run 'make test'
执行make test 进行测试,如果出现如下错误:
[root@localhost redis-6.0.1]# make testcd src && make testmake[1]: 进入目录“/usr/redis-6.0.1/src” CC Makefile.depmake[1]: 离开目录“/usr/redis-6.0.1/src”make[1]: 进入目录“/usr/redis-6.0.1/src”You need tcl 8.5 or newer in order to run the Redis testmake[1]: *** [test] 错误 1make[1]: 离开目录“/usr/redis-6.0.1/src”make: *** [test] 错误 2
解决方法:
[root@localhost redis-6.0.1]# yum install tcl
[root@localhost redis-6.0.1]# make test