初识
#节点服务器redis#
- 高性能
- Key-Value
- 读写分离来承载读请求QPS超过10万
- 多种数据结构
(五大基础 字符串,哈希,列表,序列有序集合)
String,Hash,List,Set,Sorted Set
(衍生bitmaps、hyperloglog、geo )
- 丰富功能
pipeline(提高客户端并发)
发布订阅
geo
位图
支持Lua脚本
简单事务
- 高可用 分布式
Redis Sentinel(哨兵)
Redis Cluster Codis开源
- 单线程 批量处理
- 数据结构 应用场景
- 各个语言 客户端使用
#redis运维#
- 性能优化
- 分布式基础
- 服务/客户 交互故障 困扰解决——高可用
- 分布式特性 ——伸缩
- 开源 源码定制化
- 键值 存储 服务系统
—— key-Value 特性
- 两种持久化方式(RDB&AOF)
安装
技术搞事 QQ群599020441
纪年科技aming
网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。
叮叮叮:产品已上线 —>关注 官方-微信公众号——济南纪年信息科技有限公司
民生项目:商城加盟/娱乐交友/创业商圈/外包兼职开发-项目发布/
安全项目:态势感知防御系统/内网巡查系统
云服项目:动态扩容云主机/域名/弹性存储-数据库-云盘/API-AIeverthing
产品咨询/服务售后(同)
纸上得来终觉浅,绝知此事要躬行 !!!
寻找志同道合伙伴创业中。。。抱团滴滴aming联系方式!!
#本文为广告系统自动投放广告
# 如有侵权 删改 请速速联系我们
ping www.baidu.com
wget http://download.redis.io/releases/redis-4.0.6.tar.gz
tar -xzf redis-4.0.6.tar.gz
##### ln -s redis-4.0.6 redis
mv redis-4.0.6 redis
cd redis
make && make install
cd /root/redis/
vi redis.conf
cd /root/redis/utils
./install_server.sh
/root/redis/redis.conf
/root/redis/redis.log
/root/redis/data
cat /root/redis/redis.log
cd /etc
mkdir redis
cp /root/redis/redis.conf /etc/redis/6379.conf
cp /root/redis/utils/redis_init_script /etc/init.d/redisd
cd /etc/init.d
vi redisd
chkconfig redisd on
service redisd start
ps -ef |grep redis
- 根据各种应用场景 去改就好
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一般都是部署在服务器上作为服务存在的。所以,本文的解决方案都是持久性配置,不是临时配置。
第一个警告:
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
但是这个只是暂时的。如果想要永久解决,打开/etc/sysctl.conf
vi /etc/sysctl.conf
在这里面添net.core.somaxconn= 1024 然后执行sysctl -p 就可以永久消除这个warning
第二个警告: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
第三个警告: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.
将
echo never > /sys/kernel/mm/transparent_hugepage/enabled
添加到/etc/rc.local中
vi /etc/rc.local
然后执行source /etc/rc.local生效配置
cd /etc/init.d
systemctl restart redis_6379
死活连接不上
禁用防火墙
在RHEL7开始,使用systemctl工具来管理服务程序,包括了service和chkconfig
[root@rhel7 ~]# systemctl stop firewalld.service
[root@rhel7 ~]# systemctl disable firewalld.service
[root@rhel7 ~]# systemctl status firewalld.service
启动一个服务: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 集群搭建
- 伸缩细节 扩容 、缩容
- 客户端使用
- 单机 Sentinel Cluster 客户端改动
- JedisPool JedisSentinelPool 连接
- 自身方式连接
- 节点迁移 槽迁移