redis
康康的博客
摸鱼小能手
展开
-
开发框架整合与搭建:spring boot+mybatis+jedis
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <parent> <groupId&原创 2018-03-10 22:34:12 · 337 阅读 · 0 评论 -
12.redis cluster 测试
一. redis cluster 提供多个master,数据分布式存储在多个master上,每个master都带着slave,自动实现读写分离; 每个master如果故障,那么会自动将slave切换成master,高可用 你在redis cluster上写入数据时,其实你可以将请求发到任意一个master上执行,但是master会计算这个key的CRC16值, 然后对16384个hashslo...原创 2018-03-10 22:30:21 · 193 阅读 · 0 评论 -
13.redis水平扩容master支撑更高读写吞吐+海量数据
可以看到redis-trib.rb具有以下功能:1、create:创建集群2、check:检查集群,检查集群状态的命令,没有其他参数,只需要选择一个集群中的一个节点即可3、info:查看集群信息4、fix:修复集群5、reshard:在线迁移slot6、rebalance:平衡集群节点slot数量7、add-node:将新节点加入集群8、del-node:从集群中删除节点9、set-timeout...原创 2018-03-10 22:30:53 · 935 阅读 · 0 评论 -
14.redis cluster的核心原理分析:gossip通信、jedis smart定位、主备切换
一、节点间的内部通信机制 1、基础通信原理 (1)redis cluster节点间采取gossip协议进行通信 跟集中式不同,不是将集群元数据(节点信息,故障,等等)集中存储在某个节点上,而是互相之间不断通信, 保持整个集群所有节点的数据是完整的 集中式:好处在于,元数据的更新和读取,时效性非常好,一旦元数据出现了变更,立即就更新到集中式的存储中,其他节点读取的时候立即就可以感知到; 不好...转载 2018-03-10 22:32:02 · 455 阅读 · 0 评论 -
15.redis在实践中的一些常见问题以及优化思路
1、fork耗时导致高并发请求延时 RDB和AOF的时候,其实会有生成RDB快照,AOF rewrite,耗费磁盘IO的过程,主进程fork子进程 fork的时候,子进程是需要拷贝父进程的空间内存页表的,也是会耗费一定的时间的 一般来说,如果父进程内存有1个G的数据,那么fork可能会耗费在20ms左右,如果是10G~30G,那么就会耗费20 * 10, 甚至20 * 30,也就是几百毫秒的时间...转载 2018-03-10 22:32:22 · 262 阅读 · 0 评论 -
14.redis关于LRU清除算法以及配置
1、LRU算法概述redis默认情况下就是使用LRU策略的,因为内存是有限的,但是如果你不断地往redis里面写入数据,那肯定是没法存放下所有的数据在内存的所以redis默认情况下,当内存中写入的数据很满之后,就会使用LRU算法清理掉部分内存中的数据,腾出一些空间来,然后让新的数据写入redis缓存中LRU:Least Recently Used,最近最少使用算法2、缓存清理设置redis.co ...转载 2018-03-10 22:35:23 · 1367 阅读 · 0 评论 -
15.redis缓存冷启动
缓存冷启动的问题1.新系统第一次上线,此时在缓存里可能是没有数据的2.系统在线上稳定运行着,但是突然间重要的redis缓存全盘崩溃了,而且不幸的是,数据全都无法找回来导致大量请求达到mysql数据库...原创 2018-03-10 22:36:05 · 601 阅读 · 0 评论 -
16.redis缓存预热(基于storm)
0、缓存预热缓存冷启动,redis启动后,一点数据都没有,直接就对外提供服务了,mysql就裸奔(1)提前给redis中灌入部分数据,再提供服务(2)肯定不可能将所有数据都写入redis,因为数据量太大了,第一耗费的时间太长了,第二根本redis容纳不下所有的数据(3)需要根据当天的具体访问情况,实时统计出访问频率较高的热数据(4)然后将访问频率较高的热数据写入redis中,肯定是热数据也比较多,...转载 2018-03-10 22:36:46 · 3026 阅读 · 0 评论 -
高并发场景下的缓存+数据库双写不一致问题分析与解决方案
1、最初级的缓存不一致问题以及解决方案 问题: 先修改数据库,再删除缓存,如果删除缓存失败了,那么会导致数据库中是新数据,缓存中是旧数据,数据出现不一致。 解决思路: 先删除缓存,再修改数据库,如果删除缓存成功了,如果修改数据库失败了,那么数据库中是旧数据,缓存中是空的,那么数据不会不一致。因为读的时候缓存没有,则读数据库中旧数据,然后更新到缓存中2、比较复杂的数据不一致问题分析 过程: 有...原创 2018-03-11 20:06:11 · 3750 阅读 · 0 评论 -
11.重新搭建一套主从复制+高可用+多master的redis cluster集群
1.停掉之前的redis进程和sentinel进程redis-cli -h 139.199.10.125 -p 5000 shutdownredis-cli -h 139.199.10.125 -p 6379 shutdownredis-cli -h 139.199.10.125 -p 5000 -a redis-pass shutdown 有密码redis-cli -h 139.199.10....原创 2018-03-10 22:29:50 · 182 阅读 · 0 评论 -
10.数据分布算法hash_一致性hash
1.hash将key值计算哈希值,得到的数字对服务器master的数量进行取余,用这种方法实现将数据分布到不同服务器上弊端,当某一台服务器master挂了,意味着1/3的数据丢失了,不但如此,由于服务器的数量变化了,取到的余数也会发生变化,导致原来服务器上的数据查询不到,可能导致所有的数据丢失 例如:一个key值哈希值2131233,取余服务器数量3得到0,用户到第一台master取数据,当某些原...转载 2018-03-10 22:29:24 · 414 阅读 · 0 评论 -
9.redis横向扩容支撑1T+数据
1.redis海量数据的瓶颈2.怎样才能突破瓶颈,支撑海量数据3.redis的集群架构 redis cluster (多master,读写分离,高可用)在Cluster推出之前,可用性要靠Sentinel保证。有了集群之后也自动具有了Sentinel的监控和自动Failover能力。支持N个master node ,每个master node都可以有多个slave node读写分离架构,写就到...转载 2018-03-10 22:28:56 · 480 阅读 · 0 评论 -
1.redis部署
$ wget http://download.redis.io/releases/redis-4.0.2.tar.gz $ tar xzf redis-4.0.2.tar.gz $ cd redis-4.0.2 $ make 下载解压redis-2.0.4后,执行make进行编译,结果出现下面的错误: (1) make: cc: Command not found make: ...原创 2018-03-10 22:24:59 · 113 阅读 · 0 评论 -
2.redis持久化
1. Redis中数据存储模式有2种:cache-only,persistence; cache-only即只做为“缓存”服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在“数据恢复”的手段,是一种安全性低/效率高/容易扩展的方式; persistence即为内存中的数据持久备份到磁盘文件,在服务重启后可以恢复,此模式下数据相对安全。 2. 对于persistence持久化存储,Redi...原创 2018-03-10 22:25:22 · 137 阅读 · 0 评论 -
3.redis主从架构读写分离
(1)redis支撑高并发的瓶颈 redis 单机(2)如何解决 部署多台服务器,使用主从架构,一主多从,实现读写分离,主写从读,可水平扩展(3)主从架构如何实现 $ wget http://download.redis.io/releases/redis-4.0.2.tar.gz $ tar xzf redis-4.0.2.tar.gz $ cd redis-4.0.2 $ make...原创 2018-03-10 22:26:17 · 179 阅读 · 0 评论 -
4.redis数据备份以及恢复
(1)创建目录:/usr/local/redis/copy mkdir /usr/local/redis/copy目录下创建脚本文件: redis_rdb_copy_hourly.sh vi redis_rdb_copy_hourly.sh 文件内容: #! /bin/sh 是指此脚本使用/bin/sh 来执行 cur_date=$(date +%...原创 2018-03-10 22:26:46 · 354 阅读 · 0 评论 -
5.redisQPS压测
进入redis安装目录下的src目录redis-benchmark -h 10.135.12.50 -h 指定服务器主机名 默认127.0.0.1-p 指定服务器端口 默认6379-s 指定服务器socket -c 指定并发连接数 默认50-n 指定请求数 默认10000-d 以字节的形式指定 SET/GET 值的数据大小 默认2...原创 2018-03-10 22:27:06 · 995 阅读 · 0 评论 -
6.redis高可用实现
redis高可用架构,叫故障转移,也叫做主备切换 实现: sentinel哨兵 哨兵是redis集群架构非常重要的组件之一,主要功能: (1)集群监控 负责监控redis master和slave进程是否正常工作 (2)消息通知 如果master实力发生故障,哨兵会发送消息作为警报通知给管理员 (3)故障转移 如果master node挂掉,会自动转移到slave node 上 (4...原创 2018-03-10 22:27:28 · 178 阅读 · 0 评论 -
7.redis哨兵主从切换数据丢失问题及解决
redis哨兵主从切换下数据丢失:(1)异步数据丢失问题: 当集群节点间网络或其他问题导致异步复制延时很高,如果此时master宕机了, 毫无疑问会丢失延时的这段时间的数据当集群节点间网络或其他问题导致异步复制延时很高, 如果此时master宕机了,毫无疑问会丢失延时的这段时间的数据(2)脑裂问题: 当网络分区变化导致master和slave节点之间无法正常通信时,sentinel哨兵集群会选...原创 2018-03-10 22:28:05 · 4501 阅读 · 0 评论 -
8.redis哨兵部署
1。创建目录mkdir /etc/sentinel 存放配置文件mkdir -p /var/sentinel/50002.复制配置文件并重命名 cp /usr/local/redis-4.0.2/sentinel.conf /etc/sentinel/ mv /etc/sentinel/sentinel.conf /etc/sentinel/5000.conf3.编辑配置文件vi /etc/...原创 2018-03-10 22:28:33 · 231 阅读 · 0 评论 -
分布式重建缓存的并发冲突问题
分布式重建缓存的并发冲突问题缓存更新和缓存重建在不同机器上的并发冲突问题基于zookeeper分布式锁的冲突解决方案 重建缓存: 比如我们这里,数据在所有的缓存中都不存在了(LRU算法弄掉了),就需要重新查询数据写入缓存,重建缓存 分布式的重建缓存,在不同的机器上,不同的服务实例中,去做上面的事情,就会出现多个机器分布式重建去读取 相同的数据,然后写入缓存中,可能出现分布式重建缓存的并发冲...原创 2018-03-11 20:08:29 · 1308 阅读 · 0 评论