redis安装以及配置文件详解

redis安装

先安装编译环境:

    yum install -y gcc
    yum install -y gcc-c++

解压redis的压缩包,之后进入解压目录,执行 make && make install

安装之后的目录结构:

先将redis.conf文件打开,将里面的daemon属性改为yes,以守护进程的方式启动。

另外,以守护进程的方式启动后会在/var/run 目录下生成一个 ’redis.pid’ 的文件(配置文件可指定文件名),记录当前运行redis的进程号。

启动redis服务:

连接到redis服务:

安装完成。

redis配置文件解析

绑定到的设备才可以连接到redis

所有其他的host都可以连接到redis

端口号配置

如果调大这个值同时也要修改somaxconn and tcp_max_syn_backlog,和系统资源设置有关

当redis主机和客户端在同一台机器上,通过unix socket交互,不走tcp,提高速度

检测客户端连接情况

pidfile /var/run/redis_6379.pid    //pid 文件

log级别

指定logfile,默认 /dev/null

可以设置打印到系统日志

设置数据库个数,默认使用第0个

rdb设置

rdb的压缩,校验,文件名和路径设置

# slaveof <masterip> <masterport>   配置主服务器

# masterauth <master-password> 主服务器密码(如果有)

如果从服务器失去连接,yes:继续提供服务(可能数据已经过期),no:对所有命令响应报错,除了‘info’,‘slaveof’

当从服务器连接时,主服务同步数据,diskback是将RDB文件写入到磁盘上,然后同步到从服务器上,如果有多个从服务器,一个一个同步。diskless:不经过磁盘,直接复制给从服务器,如果多个从服务器可以并行处理(此方式还是实验性的)

无盘复制有个延迟等待,等所有的从服务器都到达,避免复制时有新从服务器到达开始等待

从服务器心跳

复制超时时间,要比 repl-ping-slave-period 大。

设置为yes可能有一些同步延迟,但是服务器端可以节约出更多的资源,服务器压力大的时候可以开启yes

从服务器失去连接产生backlog,失去的时间越长,backlog越大,设置大小,从服务器再连接时直接同步backlog,可以设置backlog时长,过期释放。

设置为0则永远不释放

slave-priority 100 从服务器优先级,用于哨兵选举某个从服务器为主服务器


# slave-announce-ip 5.5.5.5
# slave-announce-port 1234

暴漏从服务器的ip和端口号

# requirepass foobared    设置密码

# maxclients 10000  最大客户端连接

 

# maxmemory <bytes>  占用最大内存

# maxmemory-policy noeviction  逐出key的策略

lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no设置为yes后可以异步删除

appendonly no  #是否打开aof

appendfilename "appendonly.aof"  #aof 文件名

# appendfsync always
appendfsync everysec
# appendfsync no

# no: don't fsync, just let the OS flush the data when it wants. Faster.
# always: fsync after every write to the append only log. Slow, Safest.
# everysec: fsync only one time every second. Compromise.

no-appendfsync-on-rewrite no

如果该参数设置为no,是最安全的方式,不会丢失数据,但是要忍受阻塞的问题。如果设置为yes,相当于将appendfsync设置为no,这说明并没有执行磁盘操作,只是写入了缓冲区,因此这样并不会造成阻塞

# 自动重写AOF

# 当AOF文件大小到一定比例,就自动隐式调用BGREWRITEAOF

# 过程:redis记住最后一次rewrite时aof文件大小(重启后没rewrite的话,就是启动时AOF文件的大小),如果现在AOF大小和上次的比例达到特定值就重写。也要指定最小AOF大小,防止到2倍:1M的时候也重写。

# 把percentage改成0,就是禁用重写。

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

# AOF文件可能在尾部是不完整的(上次system关闭有问题,尤其是mount ext4文件系统时没有加上data=ordered选项。只会发生在os死时,redis自己死不会不完整)。那redis重启时load进内存的时候就有问题了。

# 发生的时候,可以选择redis启动报错,或者load尽量多正常的数据。

# 如果aof-load-truncated是yes,会自动发布一个log给客户端然后load(默认)。如果是no,用户必须手动redis-check-aof修复AOF文件才可以。

aof-load-truncated yes

4.0开始允许使用RDB-AOF混合持久化的方式结合了两者的优点通过aof-use-rdb-preamble配置项可以打开混合开关。

# 如果达到最大时间限制(毫秒),redis会记个log,然后返回error。

# 当一个脚本超过了最大时限。只有SCRIPT KILL和SHUTDOWN NOSAVE可以用。第一个可以杀没有调write命令的东西。要是已经调用了write,只能用第二个命令杀。

# 设置成0或者负值,时限就无限。

lua-time-limit 5000

# cluster-enabled yes 开启集群

# cluster-config-file nodes-6379.conf集群配置文件

1cluster-enabled yes  #开启集群
2cluster-config-file nodes-6379.conf  #集群配置信息文件,由Redis自行更新,不用手动配置。每个节点都有一个集群配置文件用于持久化保存集群信息,需确保与运行中实例的配置文件名    不冲突。
3cluster-node-timeout 15000  #节点互连超时时间,毫秒为单位
4cluster-slave-validity-factor 10  #在进行故障转移的时候全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了导致数据过于陈旧,不应该被提升为master。该参数就是用来判断slave节点与master断线的时间是否过长。判断方法是:比较slave断开连接的时间和(node-timeout * slave-validity-factor)+ repl-ping-slave-period如果节点超时时间为三十秒, 并且slave-validity-factor为10,假设默认的repl-ping-slave-period是10秒,即如果超过310秒slave将不会尝试进行故障转移
5cluster-migration-barrier 1  #master的slave数量大于该值,slave才能迁移到其他孤立master上,如这个参数被设为2,那么只有当一个主节点拥有2个可工作的从节点时,它的一个从节点才会尝试迁移。
6cluster-require-full-coverage yes  #集群全部的slot有节点负责,集群状态才为ok并提供服务。设置为no可以在slot没有全部分配的时候提供服务。不建议打开该配置,这样会造成分区的时候,小分区的master一直在接受写请求,而造成很长时间数据不一致。

slow log,用来记录查询执行时间,

延迟监控

notify-keyspace-events ""

keyspace事件通知

 

  1. # 当hash中包含超过指定元素个数并且最大的元素没有超过临界时,

  2. # hash将以一种特殊的编码方式(大大减少内存使用)来存储,这里可以设置这两个临界值

  3. # Redis Hash对应Value内部实际就是一个HashMap,实际这里会有2种不同实现,

  4. # 这个Hash的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,对应的value redisObject的encoding为zipmap,

  5. # 当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。

  6. hash-max-zipmap-entries 512

  7. hash-max-zipmap-value 64

列表也以特殊的方式编码,节省了大量的空间。可以指定每个内部列表节点允许的条目数目作为一个固定的最大大小或最大数量的元素。

所有的client请求redis数据的时候,redis要返回给client的数据都会先被存储在output-buffer中,等所有信息都被传送完毕之后,再清除output-buffer中的数据。redis为了保护做了限制,这个配置可以查看redis的配置文件

client-output-buffer-limit slave 256mb 64mb 60
这里对是客服端是slave的做限制
256mb 是一个硬性限制,当output-buffer的大小大于256mb之后就会断开连接
64mb 60 是一个软限制,当output-buffer的大小大于64mb并且超过了60秒的时候就会断开连接

新的LFU模型

从Redis4.0开始,一个新的叫做最少频率使用驱逐模型是可用的。此模型在某些场景下可能会工作的更好(提供一个更好的命中/失误比率),因为使用LFU Redis将试图追踪所访问目标的频率,以便极少使用的驱逐而经常使用的则有更高机会保留在内存中。

如果一个目标是最近被访问的,但是几乎是未被访问的,是不应该过期的,所以风险是可能驱逐一个将来有很高机会再次被访问的key。LFU不存在这个问题,并且通常对于不同的访问模式适应的更好。

要配置LFU模式,以下策略是可用的:

  • volatile-lfu:使用LFU算法驱逐keys,在过期的keys中驱逐。
  • allKeys-lfu:使用LFU算法驱逐keys。

LFU同LRU近似:它使用一个概率的计数器,叫作Morris counter用于花费很少节节评估第个对象的访问频率,再结合一个衰变期用以计数器减少时间开销:在某些点我们不再考虑keys的访问频繁度,即使他们是老的keys,所以此算法可适用于访问模式的转变。

但是,不像LRU,LFU拥有某些调整参数:例如,低于多快一个频率一个目标将不能被访问?也可以调整Morris counters范围来使算法适用一些特殊用户场景。

默认情况下Redis4.0被配置成:

  • 计数器一百万请求的饱和度。
  • 每分钟衰变计数器。

怎么改变这些参数的说明可以在redis.conf中找到,简单如下:

lfu-log-factor 10
lfu-decay-time 1

 

redis 关闭: ./src/redis-cli -a pwd shutdown

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis 是一个开源的内存数据存储系统,主要用作缓存和数据库。Redis 配置文件Redis 服务器的配置文件,它包含了 Redis 服务器的所有配置选项。 Redis 配置文件的位置在 Redis 安装目录下的 redis.conf 文件中,可以通过修改该文件来配置 Redis 服务器。下面是 Redis 配置文件的一些常用配置选项的详解: 1. bind:Redis 服务器的绑定地址,在默认情况下,Redis 服务器会绑定所有可用的网络接口,可以通过设置 bind 选项来指定 Redis 服务器的绑定地址。 2. port:Redis 服务器的监听端口,默认情况下,Redis 服务器会监听 6379 端口,可以通过设置 port 选项来指定 Redis 服务器的监听端口。 3. daemonize:Redis 服务器是否以守护进程的方式启动,默认情况下,Redis 服务器会以前台进程的方式启动,可以通过设置 daemonize 选项来指定 Redis 服务器是否以守护进程的方式启动。 4. logfile:Redis 服务器的日志文件路径,默认情况下,Redis 服务器的日志文件路径为标准输出,可以通过设置 logfile 选项来指定 Redis 服务器的日志文件路径。 5. databases:Redis 服务器的数据库数量,默认情况下,Redis 服务器只有一个数据库,可以通过设置 databases 选项来指定 Redis 服务器的数据库数量。 6. maxclients:Redis 服务器的最大连接数,默认情况下,Redis 服务器的最大连接数为 10000,可以通过设置 maxclients 选项来指定 Redis 服务器的最大连接数。 7. maxmemory:Redis 服务器的最大内存使用量,默认情况下,Redis 服务器不限制最大内存使用量,可以通过设置 maxmemory 选项来指定 Redis 服务器的最大内存使用量。 以上是 Redis 配置文件的一些常用配置选项的详解,通过修改这些配置选项,可以对 Redis 服务器进行各种配置和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值