之前的项目一直用memcached,新的项目需要用到Redis
下载地址:Download | Redis
目前楼主下载的是最新的版本:redis-6.0.8版本
1、解压
tar -zxvf redis-6.0.8.tar.gz
2、移动目录
mv /root/redis-6.0.8 /mnt/redis
3、安装gcc环境
由于redis是由C语言编写的,它的运行需要C环境,所以要先安装依赖包
yum install cpp
yum install binutils
yum install glibc
yum install glibc-kernheaders
yum install glibc-common
yum install glibc-devel
yum install gcc-c++
yum install make
升级gcc
编译过程有可能会遇到以下错误
需要升级gcc的版本:
yum -y install centos-release-scl && yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils && scl enable devtoolset-9 bash
4、安装redis
cd /mnt/redis
编译:make
安装:make PREFIX=/mnt/redis install
PREFIX=
用于指定程序的安装路径,后续卸载redis可以直接用 rm -rf /mnt/redis就可以
5、相关配置
新建etc、db目录
进入etc目录,新建redis.conf文件,内容如下
#修改为守护模式
daemonize yes
#设置进程锁文件
pidfile /mnt/redis/redis.pid
#默认端口
port 6379
#客户端超时时间
timeout 300
#日志级别
loglevel debug
#日志文件位置
logfile /mnt/redis/log-redis.log
#设置数据库的数量,默认数据库为16,可以使用SELECT 命令在连接上指定数据库id
databases 16
##指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
#save
#Redis默认配置文件中提供了三个条件:
save 900 1
save 300 10
save 60 10000
#指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,
#可以关闭该选项,但会导致数据库文件变的巨大
rdbcompression yes
#指定本地数据库文件名
dbfilename redisdb.rdb
#指定本地数据库路径
dir /mnt/redis/db/
#默认情况下Redis会异步的将数据导出到磁盘上
#但是如果断电或者redis进程出问题就会导致一段时间内的更新数据丢失(取决与配置项)
#redis本身同步数据文件是按上面save条件来同步的,所以有些数据会在一段时间内只存在于内存中
appendonly no
#Redis支持3种不同的模式:
#no:不即时同步,由操作系统控制何时刷写到磁盘上,这种模式速度最快;
#always:每次只写日志,速度较慢,但最安全;
#everysec:每秒钟同步一次,折中的方案。
appendfsync everysec
6、启动redis
./bin/redis-server etc/redis.conf
tail -f log-redis.log
WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1'
内核参数overcommit_memory
它是 内存分配策略
可选值:0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
解决方法,一下三种方法选一个执行就行
(1)编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效
(2)sysctl vm.overcommit_memory=1
(3)echo 1 > /proc/sys/vm/overcommit_memory
7、redis测试
ps -ef|grep redis
redis-cli