Redis 基础知识与安装配置
文章目录[隐藏]
Redis 介绍
- Redis和Memcached类似,也属于k-v数据存储。
- Redis官网 redis.io,当前最新稳定版 5.0.7。
- 支持更多value类型,除了和字符串(String)外,还支持hash、lists(列表)、map(哈希)、sets(集合)和 sorted sets(有序集合)等类型。
- redis使用了两种文件格式:全量数据(RDB)和增量请求(aof)。全量数据格式是把内存中的数据写入磁盘,便于下次读取文件进行加载。增量请求文件则是把内存中的数据序列化为操作请求,用于读取文件进行replay得到数据,这种类似于mysql binlog。
- redis的存储分为内存存储、磁盘存储和log文件三部分。
- Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。
一 、Redis 安装
1、下载 Redis
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
2、创建 redis 程序、配置、日志目录
mkdir -p /usr/local/redis/{bin,etc,var}
3、修改 redis 工作目录
[ ! -d /data/redis ] >> mkdir -p /data/redis
4、编译安装 redis
make PREFIX=/usr/local/redis install
5、复制配置文件到安装目录下
/bin/cp redis.conf /usr/local/redis/etc/redis.conf
6、备份配置文件
/bin/cp /usr/local/redis/etc/redis.conf{,_bak}
二、修改Redis.conf文件
1、修改 pidfile 存放位置
sed -i "s@pidfile.*@pidfile /usr/local/redis/var/redis.pid@" /usr/local/redis/etc/redis.conf
2、指定unix socket文件的路径
sed -i "s@unixsocket.*@unixsocket /usr/local/redis/var/redis-server.sock@" /usr/local/redis/etc/redis.conf
3、修改日志 存放位置
sed -i "s@logfile.*@logfile /usr/local/redis/var/redis.log@" /usr/local/redis/etc/redis.conf
4、修改 工作目录 存放位置
sed -i "s@^dir.*@dir /usr/local/redis/var@" /usr/local/redis/etc/redis.conf
5、以守护进程方式启动
sed -i 's@daemonize no@daemonize yes@' /usr/local/redis/etc/redis.conf
6、修改绑定IP,允许外网访问redis 修改 bind 127.0.0.1 为 bind 0.0.0.0
sed -i "s@^# bind 127.0.0.1@bind 127.0.0.1@" /usr/local/redis/etc/redis.conf
7、设置Redis密码 507 行
sed -i "s@requirepass.*@requirepass YXjdnP4fooher3@" /usr/local/redis/etc/redis.conf
8、禁用或者重命名危险命令,在 redis.conf 里 requirepass 密码下面添加
rename-command FLUSHALL "" rename-command FLUSHDB "" rename-command CONFIG "" rename-command KEYS "" rename-command SHUTDOWN "" rename-command DEL "" rename-command EVAL ""
9、redis 允许同时最多链接数量
sed -i "s@maxclients.*@maxclients 65535@" /usr/local/redis/etc/redis.conf
10、数据库的总数量
sed -i "s@databases.*@databases 16@" /usr/local/redis/etc/redis.conf
11、是否总是显示logo
sed -i "s@always-show-logo.*@always-show-logo yes@" /usr/local/redis/etc/redis.conf
12、开启 AOF 持久化,开启后会在dir定义的目录生成appendonly.aof文件
sed -i 's#appendonly no$#appendonly yes#g' /usr/local/redis/etc/redis.conf
13、修改默认端口
sed -i "s@port.*@port 36379@" /usr/local/redis/etc/redis.conf
14、操作系统决定,指定记录日志的规则:always(只要有变动就记录)、everysec(每秒记录一次)、no(不记录)
sed -i 's#appendfsync .*$#appendfsync everysec$#g' /usr/local/redis/etc/redis.conf
15、进行持久化 当时间间隔超过60秒,或存储超过1000条记录时
sed -i 's#^save 60 .*$#save 60 1000#g' /usr/local/redis/etc/redis.conf
16、配置内核参数
sysctl vm.overcommit_memory=1 echo never > /sys/kernel/mm/transparent_hugepage/enabled
三、配置 redis.conf 快照
- 表示每15分钟且至少有1个key改变,就触发一次持久化 save 900 1
- 表示每5分钟且至少有10个key改变,就触发一次持久化 save 300 10
- 当时间间隔超过60秒,或存储超过1000条记录时,进行持久化 save 60 1000
- redis会自动恢复接受写请求 stop-writes-on-bgsave-error yes
- 快照压缩 持久化的时候是否运行对字符串对象进行压缩,算法为LZF rdbcompression yes
- 文件末尾是否包含一个CRC64的校验和 rdbchecksum yes
四、配置内存大小
1、根据自己的内在大小, 在 maxmemory 下面添加 对应值
1G maxmemory 128000000 2G maxmemory 256000000 4G maxmemory 512000000
2、允许外连接redis服务,需配置bind ip或者设置访问密码
sed -i "s@protected-mode.*@protected-mode yes@" /usr/local/redis/etc/redis.conf
3、修改默认端口
sed -i 's#port .*$#port 16379$#g' /usr/local/redis/etc/redis.conf
五、生成环境变量
[ -z "`grep ^'export PATH=' /etc/profile`" ] ; echo "export PATH=/usr/local/redis/bin:\$PATH" >> /etc/profile [ -n "`grep ^'export PATH=' /etc/profile`" -a -z "`grep /usr/local/redis /etc/profile`" ] >> sed -i "s@^export PATH=\(.*\)@export PATH=/usr/local/redis/bin:\1@" /etc/profile source /etc/profile
六、添加运行用户
groupadd redis useradd -M redis -s /sbin/nologin -d /dev/null -g redis
1、设置 redis 目录和日志及数据权限为 redis
chown -R redis:redis /usr/local/redis chown -R redis:redis /data/redis
七、添加开机启动
1、把下面脚本保存为 redis-server.service 文件
[Unit] Description=Redis In-Memory Data Store After=network.target [Service] Type=forking PIDFile=/usr/local/redis/var/redis_6379.pid User=redis Group=redis Environment=statedir=/usr/local/redis PermissionsStartOnly=true ExecStartPre=/bin/mkdir -p ${statedir} ExecStartPre=/bin/chown -R redis:redis ${statedir} ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf ExecStop=/bin/kill -s TERM $MAINPID Restart=always LimitNOFILE=1000000 LimitNPROC=1000000 LimitCORE=1000000 [Install] WantedBy=multi-user.target
2、复制到 /lib/systemd/system/ 下面
/bin/cp redis-server.service /lib/systemd/system
3、修改 redis 服务启动路径
sed -i "s@/usr/local/redis@/usr/local/redis@g" /lib/systemd/system/redis-server.service sed -i "s@^PIDFile=.*@PIDFile=/usr/local/redis/var/redis_6379.pid@" /lib/systemd/system/redis-server.service sed -i "s@/var/run@/usr/local@g" /lib/systemd/system/redis-server.service
4、安全设置
chmod 600 /usr/local/redis/etc/redis.conf
5、添加开机启动
systemctl enable redis-server systemctl daemon-reload systemctl start redis-server.service
6、检查是否正常运行
ps -aux|grep redis systemctl status redis-server.service