redis 下载安装
一、redis下载
1.1、redis介绍
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets),带有范围查询的 有序集合(sorted sets) , bitmaps, hyperloglogs 和 地理空间(geospatial) 索引。 Redis 内置了 复制(replication), LUA脚本(Lua scripting), LRU驱动事件(LRU eviction), 事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel) 和自动 分区(Cluster)提供高可用性(high availability)1.2、redis 下载
下载地址:https://download.redis.io/releases/选一个你需要的版本下载即可。注意,下载tar.gz结尾的,那种rc1.tar.gz 或者 beta.tar.gz这种的不要下载。
Redis 使用标准的做法进行版本管理: 主版本号.副版本号.补丁号。 偶数 副版本号表示一个稳定的版本,像 1.2, 2.0, 2.2。奇数副版本号表示不稳定的发布,例如 2.9.x 发布是一个不稳定版本。
二、linux 安装redis
1、把下载的安装包上传到服务器并解压
tar -zxvf redis-7.0.9.tar.gz
2、安装依赖包(如果没有gcc包的话,一般linux都自带)
yum install gcc
3、编译安装
cd redis-7.0.9
make
cd src
make install
# 默认会安装到/usr/local/bin目录下
redis-benchmark
redis-check-aof -> redis-server
redis-check-rdb -> redis-server
redis-cli
redis-sentinel -> redis-server
redis-server
4、修改配置文件
# 配置文件默认在redis-7.0.9下面,叫做redis.conf,拷贝一份到别的地方以供使用
mkdir -p /etc/redis
mkdir -p /opt/redis/{log,data}
cp /usr/local/redis-7.0.9/redis.conf /etc/redis/
vim /etc/redis/redis.conf
bind 127.0.0.1 -::1 # 直接注释掉,否则只能本机连接
daemonize no # 改为yes,控制redis是否后台启动运行
protected-mode yes # 改为no
logfile "/opt/redis/log/redis.log" # 设置日志路径
requirepass 111111 # 设置密码
dir /opt/redis/data # redis 数据目录
5、启动redis
/usr/local/bin/redis-server /etc/redis/redis.conf
[root@ob9 redis-7.0.9]# ps -ef |grep redis
root 6348 1 0 15:16 ? 00:00:00 /usr/local/bin/redis-server *:6379
6、连接redis
/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 -a 111111
7、关闭redis
/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 -a 111111 shutdown
8、查看redis相关信息
info # 查看redis实例所有信息
info server # 查看redis server信息
info clients # 查看客户端信息
info memory # 查看内存相关使用信息
info Persistence # 查看持久化相关信息
info stats # 查看统计信息
info replication # 查看主从集群相关信息
info cpu # 查看cpu相关信息
client list # 查看所有客户端信息,包括客户端的连接地址等
至此,linux 下 redis安装成功
附:redis配置文件
daemonize yes
pidfile /var/run/redis.pid
port 6379
bind 0.0.0.0
timeout 300
loglevel notice
logfile "/opt/redis/log/redis.log"
syslog-enabled no
protected-mode no
requirepass 111111
databases 16
maxclients 1000000
tcp-keepalive 300
save 900 1
save 300 10
save 60 10000
rdbcompression yes
appendonly yes
appendfilename "appendonly.aof"
appendfsync always
no-appendfsync-on-rewrite no
dir /opt/redis/data
maxmemory 30720mb
maxmemory-policy noeviction
# 主从复制相关,单机不用配置
replicaof 192.168.167.161 6379
masterauth <master-password>
slave-serve-stale-data yes
repl-timeout 60
redis 配置参数解释
######################### general ##########################################
# 是否以守护进程的方式运行,默认为no,使用yes为启动守护进程
daemonize yes
# 以守护进程方式运行时会产生pid文件,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
pidfile /var/run/redis.pid
# Redis监听端口,默认为6379,如果端口是0,则redis将不会监听TCP和socket连接
port 6379
# 设置Redis监听的IP地址和端口号
bind 0.0.0.0
# 连接超时时间,单位秒,如果指定为0,表示关闭该功能
timeout 300
# 指定日志记录级别,Redis总共支持四个级别: debug:很详细的信息,开发和测试使用;verbose:默认项,包含许多不太有用的信息,比debug清爽一些;notice:适合生产环境;warning:警告信息
loglevel notice
# 日志记录方式,默认为标准输出。如果配置Redis为守护进程方式运行而这里又配置为日志记录方式为标准输出,则日志会输出到/dev/null,所以可以指定日志文件输出位置
# logfile stdout
logfile /opt/redis/data/redis.log
# 设置为yes会把日志输出到系统日志,默认是no
syslog-enabled no
# 启用保护模式,允许远程访问
protected-mode no
# 设置Redis是否开启连接密码,默认关闭
# requirepass foobared
requirepass 111111
# 设置数据库的数量
databases 16
# 设置同一时间最大客户端连接数,7.0版本默认10000。
# 当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息
maxclients 1000000
# 配置TCP keepalive参数
tcp-keepalive 300
######################################### persistence ############################################
# 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件(硬盘),可以多个条件配合
save 900 1
save 300 10
save 60 10000
# 设置持久化文件名,默认值为 dump.rdb,通常设置为 dump-端口号.rdb
dbfilename dump.rdb
# 设置读写文件过程是否进行RDB格式校验,默认 yes;若设置为 no,节约读写 10% 时间消耗,但存在数据损坏的风险
rdbchecksum yes
# 存储数据时是否压缩数据。默认是yes
rdbcompression yes
# 后台持久化过程中如果出现错误现象,是否停止保存操作,默认 yes
stop-writes-on-bgsave-error yes
# 指定是否在每次写操作后进行日志记录,也就是是否开启AOF,默认为no
appendonly yes
# 指定AOF日志文件名
appendfilename "appendonly.aof"
# 指定写AOF日志的方式 ,共有3个可选值:
# everysec:每秒写入一次,默认值
# no:表示由操作系统进行数据缓存同步到磁盘
# always:表示每次更新操作后都会自动调用fsync()将数据写到磁盘(慢,安全)
appendfsync always
# 此选项控制在进行 AOF 重写(AOF rewrite)过程中是否执行同步操作(fsync),默认为no,表示进行fsync操作
# AOF 重写是一个优化过程,它会生成一个新的、更紧凑的 AOF 文件,以便减少 AOF 文件的大小并提高效率。在重写过程中,Redis 会继续将新的写操作追加到当前的 AOF 文件中,同时在后台创建一个新的 AOF 文件
no-appendfsync-on-rewrite no
# 当 AOF 文件大小超过上次重写后 AOF 文件大小的百分比时自动触发,默认值为 100,也就是文件大小翻了一倍后会触发重写(bgrewriteaof)
auto-aof-rewrite-percentage 100
# 当 AOF 文件大小超过指定值时自动触发,默认值为 64 MB
auto-aof-rewrite-min-size 64mb
# 指定数据库存放目录
dir /opt/redis/data
############################################# memory ###################################################
# 增加Redis的最大内存限制,以容纳更多数据
#maxmemory 16GB 增加内存限制,根据您的服务器实际内存调整
maxmemory 30720mb
# 设置在达到最大内存后的处理策略
noeviction (默认)
当 Redis 达到最大内存限制时,对于写操作(如 SET, LPUSH 等)直接返回错误。
这意味着 Redis 将拒绝任何可能导致内存增加的操作。
volatile-lru
当 Redis 达到最大内存限制时,删除最近最少使用的带有过期时间的键。
这种策略优先删除带有过期时间的键(volatile),并且优先考虑最近最少使用的键(lru)。
allkeys-lru
当 Redis 达到最大内存限制时,删除最近最少使用的键。
这种策略不考虑键是否有过期时间,而是根据最近最少使用的标准来删除键。
volatile-random
当 Redis 达到最大内存限制时,随机删除带有过期时间的键。
这种策略优先删除带有过期时间的键(volatile),并且随机选择键进行删除(random)。
allkeys-random
当 Redis 达到最大内存限制时,随机删除任意键。
这种策略不考虑键是否有过期时间,而是随机选择键进行删除(random)。
volatile-ttl
当 Redis 达到最大内存限制时,删除最接近过期时间的带有过期时间的键。
这种策略优先删除带有过期时间的键(volatile),并且优先考虑最接近过期时间的键(ttl)。
maxmemory-policy noeviction
# vm虚拟内存相关,7.0版本之后移除了vm
# vm-enabled 是 Redis 的一个配置选项,它与 Redis 的内存交换机制(Virtual Memory,简称 VM)相关。
# Redis 的 VM 功能允许将一部分数据存储在磁盘上,从而扩展 Redis 的内存容量。
# 这个功能主要用于那些需要处理大量数据但受限于有限内存的情况。
要启用 Redis 的 VM 功能,你需要在 Redis 的配置文件(通常是 redis.conf)中设置以下参数,注意,不建议启用:
vm-enabled: 设置为 yes 以启用 VM 功能。
vm-swap-file: 指定 VM 文件的位置和名称。这个文件将用于存储从内存中换出的数据。
vm-max-memory: 设置 Redis 在内存中的最大使用量。当 Redis 使用的内存超过这个阈值时,就会开始将数据换出到磁盘。
vm-page-size: 设置 VM 页面的大小(单位为字节)。默认值是 32MB。
vm-pages-to-write: 设置每次换出时要写的页面数量。
vm-pages-to-read: 设置每次换入时要读取的页面数量。
vm-max-threads: 设置 VM 操作的最大线程数。
############################## replica ##################################
# 设置当本机为slave服务时,master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
# replicaof <masterip> <masterport>
replicaof 192.168.167.161 6379
# 当master服务设置了密码保护时,slave服务连接master的密码
masterauth <master-password>
# 当slave丢失与master的连接时,或者slave仍然在与master进行数据同步时(还没有与master保持一致),
# slave相应客户端请求的方式。如果设置成 'yes' (the default),slave会仍然响应客户端请求,
# 如果设置成 'no',slave会返回"SYNC with master in progress"这样的错误信息
slave-serve-stale-data yes
# 参数定义了主服务器在等待从服务器确认接收到写操作时的超时时间。如果在设定的时间内从服务器没有确认接收到写操作,主服务器将中断与该从服务器的连接,并重新建立连接。默认值60秒
repl-timeout 60
# 复制积压缓冲区大小,默认1MB,如果全量同步时耗时较长,这个参数得调大,否则全量同步会失败
repl-backlog-size 1mb
# 这个参数定义了复制积压缓冲区数据保留的时间。如果在这段时间内没有从服务器请求数据,缓冲区中的数据将被清除。单位秒默认1小时
repl-backlog-ttl 3600