CentOS7安装配置 Redis

  |   0 评论   |   0 浏览
  1. 下载源码wget http://download.redis.io/releases/redis-4.0.12.tar.gz
  2. 解压并进入到目录tar xzf redis-4.0.12.tar.gzcd redis-4.0.12/
  3. 创建/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 = ""; ^server.c:2403:11: 错误:‘struct redisServer’没有名为‘assert_line’的成员 server.assert_line = 0; ^server.c:2404:11: 错误:‘struct redisServer’没有名为‘bug_report_start’的成员 server.bug_report_start = 0; ^server.c:2405:11: 错误:‘struct redisServer’没有名为‘watchdog_period’的成员 server.watchdog_period = 0; ^server.c:2411:11: 错误:‘struct redisServer’没有名为‘lua_always_replicate_commands’的成员 server.lua_always_replicate_commands = 1;

解决办法:

[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


标题:CentOS7安装配置 Redis
作者:zytops
地址:https://www.zytops.com/articles/2019/12/31/1577765861003.html