之前的项目一直用memcached,新的项目需要用到Redis
下载地址:https://redis.io/download
目前楼主下载的是最新的版本: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
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