初识

#节点服务器redis#


  • 高性能
  • Key-Value
  • 读写分离来承载读请求QPS超过10万
  • 多种数据结构
    (五大基础 字符串,哈希,列表,序列有序集合)
    String,Hash,List,Set,Sorted Set
    缓存redis_缓存
    (衍生bitmaps、hyperloglog、geo )


  • 丰富功能
    pipeline(提高客户端并发)
    发布订阅
    geo
    位图
    支持Lua脚本
    简单事务
    缓存redis_客户端_02

  • 高可用 分布式
    Redis Sentinel(哨兵)
    Redis Cluster Codis开源


  • 单线程 批量处理
  • 数据结构 应用场景
  • 各个语言 客户端使用


#redis运维#

缓存redis_持久化_03

缓存redis_缓存_04


  • 性能优化
  • 分布式基础

缓存redis_redis_05

  • 服务/客户 交互故障 困扰解决——高可用

缓存redis_缓存_06

  • 分布式特性 ——伸缩
    缓存redis_redis_07

  • 开源 源码定制化

缓存redis_缓存_08

  • 键值 存储 服务系统

缓存redis_redis_09缓存redis_客户端_10

缓存redis_客户端_11

—— key-Value 特性

缓存redis_数据库_12

缓存redis_数据库_13

缓存redis_客户端_14缓存redis_客户端_15缓存redis_缓存_16缓存redis_数据库_17


缓存redis_redis_18缓存redis_客户端_19缓存redis_缓存_20


缓存redis_客户端_21

  • 两种持久化方式(RDB&AOF)

缓存redis_客户端_22缓存redis_数据库_23缓存redis_缓存_24缓存redis_redis_25缓存redis_redis_26缓存redis_redis_27缓存redis_缓存_28缓存redis_数据库_29缓存redis_redis_30缓存redis_持久化_31缓存redis_数据库_32缓存redis_数据库_33缓存redis_缓存_34缓存redis_持久化_35

安装

缓存redis_缓存_36



技术搞事 QQ群599020441

纪年科技aming

网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。

叮叮叮:产品已上线 —>关注 官方-微信公众号——济南纪年信息科技有限公司

民生项目:商城加盟/娱乐交友/创业商圈/外包兼职开发-项目发布/

安全项目:态势感知防御系统/内网巡查系统

云服项目:动态扩容云主机/域名/弹性存储-数据库-云盘/API-AIeverthing

产品咨询/服务售后(同)

纸上得来终觉浅,绝知此事要躬行 !!!

寻找志同道合伙伴创业中。。。抱团滴滴aming联系方式!!


#本文为广告系统自动投放广告

# 如有侵权 删改 请速速联系我们

缓存redis_redis_37缓存redis_持久化_38缓存redis_持久化_39缓存redis_数据库_40

缓存redis_数据库_41

ping www.baidu.com
wget http://download.redis.io/releases/redis-4.0.6.tar.gz

缓存redis_持久化_42

缓存redis_缓存_43

tar -xzf redis-4.0.6.tar.gz
##### ln -s redis-4.0.6 redis
mv redis-4.0.6 redis
cd redis

缓存redis_缓存_44

    make && make install

缓存redis_持久化_45

缓存redis_redis_46

缓存redis_数据库_47缓存redis_缓存_48缓存redis_客户端_49缓存redis_数据库_50缓存redis_持久化_51缓存redis_数据库_52缓存redis_redis_53缓存redis_redis_54缓存redis_redis_55缓存redis_缓存_56缓存redis_缓存_57

缓存redis_redis_58缓存redis_缓存_59缓存redis_客户端_60缓存redis_缓存_61缓存redis_缓存_62缓存redis_数据库_63缓存redis_缓存_64

缓存redis_数据库_65缓存redis_数据库_66缓存redis_持久化_67缓存redis_客户端_68缓存redis_redis_69缓存redis_持久化_70缓存redis_客户端_71缓存redis_redis_72缓存redis_数据库_73缓存redis_客户端_74




缓存redis_持久化_75缓存redis_redis_76

 cd /root/redis/
vi redis.conf

缓存redis_数据库_77缓存redis_持久化_78缓存redis_客户端_79

缓存redis_持久化_80缓存redis_数据库_81缓存redis_持久化_82缓存redis_redis_83缓存redis_数据库_84缓存redis_数据库_85缓存redis_数据库_86缓存redis_数据库_87

缓存redis_redis_88

缓存redis_缓存_89缓存redis_持久化_90缓存redis_持久化_91缓存redis_客户端_92缓存redis_redis_93

缓存redis_客户端_94缓存redis_redis_95缓存redis_持久化_96缓存redis_缓存_97缓存redis_客户端_98缓存redis_缓存_99缓存redis_数据库_100缓存redis_缓存_101

   cd  /root/redis/utils
./install_server.sh
/root/redis/redis.conf
/root/redis/redis.log
/root/redis/data

缓存redis_客户端_102

  cat  /root/redis/redis.log

缓存redis_数据库_103缓存redis_redis_104

缓存redis_客户端_105

cd   /etc
mkdir redis
cp /root/redis/redis.conf /etc/redis/6379.conf
cp /root/redis/utils/redis_init_script /etc/init.d/redisd

缓存redis_数据库_106缓存redis_数据库_107缓存redis_数据库_108

 cd /etc/init.d
vi redisd
chkconfig redisd on
service redisd start

缓存redis_持久化_109缓存redis_redis_110

缓存redis_客户端_111缓存redis_redis_112

缓存redis_数据库_113缓存redis_持久化_114缓存redis_缓存_115缓存redis_客户端_116缓存redis_缓存_117缓存redis_持久化_118缓存redis_客户端_119

ps -ef |grep redis

缓存redis_redis_120

  • 根据各种应用场景 去改就好

redis持久化 与 常见问题

#开发运维#

  • fork操作——子进程开销与优化
fork本身

(1)同步操作

虽然fork同步操作是非常快的,但是如果需要同步的数据量过大,fork就会阻塞redis主进程。

(2)与内存量息息相关

内存越大,fork同步数据耗时越长,当然也跟服务器有关,服务器有物理机,也有虚拟机。

(3)info:latest_fork_usec

使用此命令可以查看持久化花费的时间,如果持久化时间过长,就会造成卡顿。

 例如:
如果redis此时QPS上万,此时redis正在持久化,而且持久化时间比较长(1s或者10几秒),
这个时候就会严重阻塞redis。

2、改善fork

(1)优先使用物理机或者高效的虚拟机支持fork操作

(2)控制redis实际最大可用内存:maxmemory

(3)合理配置linux内存分配策略:vm.overcommit_memory=1

(4)降低fork频率:例如放宽AOF重写自动触发时机,减少不必要的全量复制。



  • 进程外开销
  • AOF追加阻塞 ——造成客户端超时
  • 单机 多部署 实例

解决方案

考虑到redis一般都是部署在服务器上作为服务存在的。所以,本文的解决方案都是持久性配置,不是临时配置。

缓存redis_缓存_121缓存redis_数据库_122

缓存redis_客户端_123

第一个警告:

The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

对一个高负载的环境来说tcp设置128这个值,太小了。

然后我们可以手动设置,或者设置永久值.所以执行:

echo 511 > /proc/sys/net/core/somaxconn

缓存redis_redis_124

但是这个只是暂时的。如果想要永久解决,打开/etc/sysctl.conf

缓存redis_缓存_125

 vi  /etc/sysctl.conf

在这里面添net.core.somaxconn= 1024 然后执行sysctl -p 就可以永久消除这个warning

缓存redis_缓存_126

第二个警告:overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add ‘vm.overcommit_memory = 1’ to/etc/sysctl.conf and then reboot or run the command ‘sysctl vm.overcommit_memory=1’ for this to take effect.

将vm.overcommit_memory = 1添加到/etc/sysctl.conf中,然后执行sysctl -p生效配置。

 sysctl -p

缓存redis_数据库_127

缓存redis_客户端_128

第三个警告:you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix thisissue run the command ‘echo never > /sys/kernel/mm/transparent_hugepage/enabled’ as root, and add it to your /etc/rc.local in order to retain thesetting after a reboot. Redis must be restarted after THP is disabled.

缓存redis_数据库_129

echo never > /sys/kernel/mm/transparent_hugepage/enabled

添加到/etc/rc.local中

 vi /etc/rc.local

缓存redis_持久化_130缓存redis_数据库_131

然后执行source /etc/rc.local生效配置

 cd /etc/init.d

systemctl restart redis_6379

缓存redis_redis_132

死活连接不上

缓存redis_数据库_133

缓存redis_缓存_134

缓存redis_数据库_135

缓存redis_持久化_136

禁用防火墙

在RHEL7开始,使用systemctl工具来管理服务程序,包括了service和chkconfig

[root@rhel7 ~]# systemctl stop firewalld.service

[root@rhel7 ~]# systemctl disable firewalld.service

[root@rhel7 ~]# systemctl status firewalld.service

缓存redis_持久化_137

 启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service;echo $?
查看已启动的服务列表:systemctl list-unit-files|grep enabled

关闭防火墙

改完配置一定要重启!重启!重启!

缓存redis_客户端_138

缓存redis_redis_139

缓存redis_持久化_140

深入

前题


  • redis 集群搭建
  • 伸缩细节 扩容 、缩容
  • 客户端使用
  • 单机 Sentinel Cluster 客户端改动
  • JedisPool JedisSentinelPool 连接
  • 自身方式连接


缓存redis_redis_141

  • 节点迁移 槽迁移