tcp_max_syn_backlog控制处于半连接SYN_RECV状态的连接数量。
somaxconn控制处于全连接ESTABLISHED状态的连接数量
有关这两个参数可以参考这篇 文章 ,写的比较详细。
我们在使用的时候要知道,tcp-backlog和somaxconn这两者的最小值会起作用。我们把somaxconn调整为1024,然后看看实际效果。
tcp-backlog起作用了。
是否配置upstart或者systemd来管理Redis服务器
如果我们需要使用systemd来管理和使用Redis服务器,我们就将设置该参数为supervised systemd
然后,我们添加redis.service 到/etc/systemd/system下。编辑内容如下几可以了。
就可以实现systemd对 redis的管理。
这个backlog感觉更像是一个cache,复制节点断网后,在连接重新建立后,将这个backlog中的数据复制过去。也称为部分同步。
条件允许,可以定义大一些。没有坏处。
既然类似于cache,就有生存期
在使用NAT时候是,master和复制节点连接信息中的ip和port可能是经过NAT后的信息,我们这里使用该参数将真正的IP和PORT信息汇报给主节点
可以将一些重要系统命令,重新命名为不容易猜测的名字。
命令重命名后再同步到别的节点,可能会引起一些问题。
Redis默认删除时是处于一种阻塞状态,自从有了异步删除方式。我们现在可以配置不同情况下的删除方式
lazyfree-lazy-eviction:达到最大内存时
lazyfree-lazy-expire:过期时
lazyfree-lazy-server-del :内部删除时
replica-lazy-flush no:复制节点执行全部同步时
同步刷新可能会带来阻塞的现象,没有其他任何办法。
通过启用本选项,在BGSAVE和BGREWRITEAOF过程中能禁止fsync的调用。
-配置AOFRewrite策略
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
这个配置表明aof增长了百分百,而且增长的大小超过了64mb,就启动bgrewriteaof。
-是否支持rdb和aof的混合持久化
启用rdb和aof的混合持久化后,aof文件跟在rdb后面,既能利用上rdb快速读取的优点,有能利用aof的安全持久能力。
如果在同一个系统中,这个配置文件不要重名
Redis服务器是一种非关系型数据存储服务器,它经常和Linux系统搭配使用。那么如何在Linux系统中安装Redis服务器呢?下面我给大家分享一下。
工具/材料Linux命令行
01首先我们运用tar命令解压redis安装包,如下图所示,这里在使用tar命令的时候运用的是zxvf参数
02接下来进入解压后的文件夹我们执行make命令,对redis进行编译,如下图所示
03编译完了以后我们通过cd命令进入src目录,然后执行make install进行安装,如下图所示
04安装完了以后我们需要创建两个文件夹,如下图所示,etc用来放置配置文件,bin用来放置执行文件
05接下来我们通过cp命令将redis.conf配置文件复制到etc目录下面,如下图所示
06然后将src目录下的命令复制到bin目录下面,这里我只复制了几个比较常用的,如下图所示
07接下来我们就可以执行redis-server命令来运行redis服务器了,注意后面加了配置文件路径,如下图所示
08最后当我们看到如下图所示的界面则代表redis安装启动成功,后面我们就可以用它进行数据存储了
redis主从复制集群
实现方式:选择一台redis服务器作为master节点(负责写操作),另外一台或多台服务器作为slave节点(负责读操作),slave节点上的数据完全由master节点同步过来。
作用:降低单节点redis服务器的读写负载,将读写分离到不同的服务器
提供数据的可用性
配置方式:
Master节点不用作任何变动
Slave节点上的配置文件redis.conf需要修改如下配置
#slaveof <masterip><masterport>
改为
salveof 127.0.0.1 6379
最好让服务器配成只读属性
salve-read-only yes123456
要想实现高可用即故障转移: 需要使用 keepalive
redis数据分片(Sharding)集群
实现方式:由若干台互不相干的redis服务器组成一个集群,互相独立,由集群的前置节点或者客户端实现将数据分散插入到集群中的各服务器上
作用:扩大数据存储的容量,降低单台服务器负载
步骤
首先准备两个服务器
其中两个服务器的服务名称和端口号要不相同,两个生产的dump.rdb文件要在不同的路径下面,而且第二个服务器不能打开主从服务器的配置,配置如下,要注释掉该配置
开启两个服务器,在后台运行
后台运行可以修改如下配置,将daemonize改为yes即可
开启两个客户端
然后编写分片集群的代码
public static void main(String[] args) { //poolConfig是连接池的配置参数
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig() //shards是分片集群中所有分片服务器信息列表,JedisShardInfo是分片服务器信息
ArrayList<JedisShardInfo>shards = new ArrayList<>() //将集群中的两台shard服务器信息封装到两个JedisShardInfo对象中
JedisShardInfo shard1 = new JedisShardInfo("192.168.90.131",6379)
JedisShardInfo shard2 = new JedisShardInfo("192.168.90.131",6380) //将分片服务器信息对象添加到分片服务器信息列表shards中
shards.add(shard1)
shards.add(shard2) //创建一个带数据分片功能的jedis连接池
ShardedJedisPool shardedJedisPool = new ShardedJedisPool(poolConfig, shards) //从连接池中获取一个带数据分片功能的jedis连接
ShardedJedis jedis = shardedJedisPool.getResource() for (int i=0i<1000i++){
jedis.set("string-key-"+i,"1000"+i)
}
jedis.close()
shardedJedisPool.close()
}123456789101112131415161718192021222324252627282930
进行运行,查看结果
可以进行检测,6379端口的客户端是否存在6380端口的key
从图中可以看出,返回0,说明不存在
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)