<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Rision666的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Rision666</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Rision666]]></copyright><item><title><![CDATA[微信公众号网页开发调用扫一扫及苹果手机（iOS）无反应问题解决方案]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/132454246</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/132454246</guid><author>Rision666</author><pubDate>Wed, 23 Aug 2023 16:32:38 +0800</pubDate><description><![CDATA[微信网页开发调取扫一扫，在返回扫描结果模式下，安卓手机好使，但是苹果手机（iOS）总是一闪而过，到底如何解决]]></description><category></category></item><item><title><![CDATA[idea配置，springboot热部署终极解决办法，解决热部署失效问题]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/107332479</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/107332479</guid><author>Rision666</author><pubDate>Tue, 14 Jul 2020 10:33:51 +0800</pubDate><description><![CDATA[1、添加maven依赖


&lt;dependency&gt;
		&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
		&lt;artifactId&gt;spring-boot-devtools&lt;/artifactId&gt;
		&lt;scope&gt;runtime&lt;/scope&gt;
		&lt;optional&gt;true&lt;/optional&gt;
&lt;/dependency&gt;

2、添加插件
]]></description><category></category></item><item><title><![CDATA[redis高级之持久化（四）---rdb与aof区别]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106995137</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106995137</guid><author>Rision666</author><pubDate>Sun, 28 Jun 2020 11:24:37 +0800</pubDate><description><![CDATA[上两篇文章我们详细介绍了rdb和aof，两种持久化方式我们在实际应用中该如何选择呢？他们各有什么优缺点，如下



rdb与aof的选择之感

对数据非常敏感，建议使用默认的aof持久化方案
aof持久化策略使用everysecond，每秒种fsync一次，该策略redis扔可以保持很好的处理性能，当出现问题时，最多丢失0-1秒内的数据。
	注意：由于aof文件存储体积较大，且回复速度较慢

	数据呈现阶段有效性，建议使用rdb持久化方案
	

	数据可以良好的做到阶段内无丢失（该阶段是开发者或者运维人员手]]></description><category></category></item><item><title><![CDATA[redis高级之持久化（三）---AOF方式]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106993941</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106993941</guid><author>Rision666</author><pubDate>Sun, 28 Jun 2020 11:17:13 +0800</pubDate><description><![CDATA[Rdb存储的弊端

存储数据量较大，效率较低（基于快照思想，每次读写都是全部数据，当数据量巨大，效率非常低）
	大数据量下的IO性能较低
	基于fork创建子进程，内存产生额外消耗
	宕机带来的数据丢失风险
解决思路

不写全数据，仅记录部分数据
	改记录数据未记录操作过程
	对所有操作均进行记录，排除丢失数据的风险
AOF概念

AOF（append only file）持久化：以独立日志的方式记录每次写命令，重启时再重新执行AOF文件中命令达到恢复数据的目的，与rdb相比可以简单描述为记录数据为记录数据]]></description><category></category></item><item><title><![CDATA[redis高级之持久化（二）---RDB方式]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106992462</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106992462</guid><author>Rision666</author><pubDate>Sun, 28 Jun 2020 10:27:19 +0800</pubDate><description><![CDATA[RDB启动方式

谁，什么时间，干什么事情

命令执行

谁：redis操作者（用户）
	什么时间：即时（随时进行）
	干什么事情：保存数据
RDB启动方式---save指令

命令


save

作用：手动执行一次保存操作

RDB启动方式---save指令相关配置



如下为配置文件：



RDB启动方式---save指令工作原理



RDB启动方式---bgsave指令

数据量过大，单线程执行方式造成效率过低如何处理？

后台执行

谁：redis操作者（用户）发起指令：redis服务器控制]]></description><category></category></item><item><title><![CDATA[redis高级之持久化（一）---持久化简介]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106992255</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106992255</guid><author>Rision666</author><pubDate>Sun, 28 Jun 2020 09:22:08 +0800</pubDate><description><![CDATA[我们将从以下几个方面对redis持久化进行介绍，本篇介绍持久化的简介，先对持久化有一个感性的认识，然后介绍两种持久化方案，再分析一下这两种持久化有什么区别，最后介绍一下持久化的应用场景。

持久化简介
	RDB
	AOF
	RDB和AOF区别
	持久化应用场景
意外的断电



自动备份



什么是持久化？

利用永久性存储介质将数据进行保存，在特定的时间将保存的数据进行恢复的工作机制称为持久化。

为什么要进行持久化？

防止数据的意外丢失，确保数据安全性

持久化过程保存什么？

将当前数据状态进行保]]></description><category></category></item><item><title><![CDATA[图解mysql索引---历史最详细、最清楚的讲解]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106839450</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106839450</guid><author>Rision666</author><pubDate>Thu, 18 Jun 2020 18:02:58 +0800</pubDate><description><![CDATA[我们先来列一个提纲，从以下几个方面介绍mysql索引

1、索引的本质
	2、索引结构及其详细解读（二叉树、红黑树、HASH、B-Tree、B+Tree）
	3、非聚集索引（MyISAM）、聚集索引（InnoDB）
	4、常见问题
一、索引的本质

索引是帮助mysql高效获取数据的排好序的数据结构
	索引存储在文件里
	索引结构
     二叉树
	     Hash
	     B树
注意：索引起的作用是：排好序的快速查找数据结构！索引会影响where后面的查找，和o...]]></description><category></category></item><item><title><![CDATA[redis高级之锁---普通锁、分布式锁、分布式锁改良]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106758438</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106758438</guid><author>Rision666</author><pubDate>Mon, 15 Jun 2020 11:21:52 +0800</pubDate><description><![CDATA[基于特定条件的事务执行---锁

业务场景
天猫双11热卖过程中，对已经售罄的货物追加补货，4个业务员都有权限进行补货，补货的操作可能是一系列的操作，牵扯到多个连续操作，如何保障不会重复操作？

业务分析
多个客户端有可能同时操作同一组数据，并且该数据一旦被操作修改后，将不适用于继续操作

在操作之前锁定要操作的数据，一旦发生变化，终止当前操作

解决方案
对key添加监视锁，在执行exec前如果key发生了变化，终止事务执行


watch key1 [key2..]

取消对所有key的监视


unw]]></description><category></category></item><item><title><![CDATA[redis高级之事务]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106757158</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106757158</guid><author>Rision666</author><pubDate>Mon, 15 Jun 2020 10:59:18 +0800</pubDate><description><![CDATA[事务简介

超市的收银员在盘账，一天下来收了一些零钱，然后一个一个数，在数的过程中来了一个儿童，这个儿童唱了一首歌：门前大桥下游过一群鸭，快来快来数一数二十六七八。然后这个收银员一脸难色地把数好的钱又放了回去。这里收银员在做连续的动作（数钱）时被打断了，或者被影响到了，那么数钱的结果肯定是不正确的。怎么解决这个问题，我们给她一个安静的环境让她数钱。



什么是事务

Redis执行指令过程中，多条连续执行的指令被干扰，打断，插队。

图片站位

Reids事务就是一个命令执行的队列，将一系列预定义命令包装]]></description><category></category></item><item><title><![CDATA[redis高级之常见问题解决方案---缓存预热、缓存雪崩、缓存击穿、缓存穿透]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106634815</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106634815</guid><author>Rision666</author><pubDate>Tue, 09 Jun 2020 10:14:05 +0800</pubDate><description><![CDATA[缓存预热

问题排查
请求数据较高
	主从之间数据吞吐量较大，数据同步操作频度较高
解决方案
	前置准备工作
日常例行统计数据访问记录，统计访问频度较高的热点数据
	利用LRU数据删除策略，构建数据留存队列
例如：storm与kafka配合

准备工作
将统计结果中的数据分类，根据级别，redis优先加载级别较高的热点数据
	利用分布式多服务器同时进行数据读取，提速数据加载过程
实施：
使用脚本程序固定触发数据预热过程
	如果条件允许，使用了CDN（内容分发网络），效果会更好
总结
缓存预热就是系统启动前，]]></description><category></category></item><item><title><![CDATA[redis高级之集群---集群]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106634321</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106634321</guid><author>Rision666</author><pubDate>Tue, 09 Jun 2020 09:52:04 +0800</pubDate><description><![CDATA[今天我们正式讲解集群相关的一些知识，我们从以下三个方面进行讲解


	集群简介
	
	
	Redis集群结构设计
	
	
	Cluster集群结构搭建
	
现状问题

业务发展过程中遇到的峰值瓶颈

Redis提供的服务OPS可以达到10万/秒，当前业务OPS已经达到20万/秒

内存单机容量达到256G，当前业务需求内存容量1T



使用集群的方式可以快速解决上述问题



集群架构

集群就是使用网络将若干台计算机联通起来，并提供统一的管理方式，使其对外呈现单机的服务效果





集群作用

...]]></description><category></category></item><item><title><![CDATA[redis高级之集群---哨兵模式]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106611638</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106611638</guid><author>Rision666</author><pubDate>Mon, 08 Jun 2020 09:24:48 +0800</pubDate><description><![CDATA[接下来我们就介绍一下哨兵模式，我们会从以下几个方面进行介绍：

哨兵简介
	启用哨兵模式
	哨兵工作原理
假如master主机“宕机”了，我们要做的就是把宕机的master干掉，然后从剩余的slave中选出一个master

       

下图是挑选出新的master

          

在主master宕机到选择出新的master，中间经历了什么。如下：

将宕机的master下线
	找一个slave作为master
	通知所有的slave连接新的maste...]]></description><category></category></item><item><title><![CDATA[redis高级之集群---主从复制（四）---主从复制常见问题]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106526632</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106526632</guid><author>Rision666</author><pubDate>Wed, 03 Jun 2020 16:14:50 +0800</pubDate><description><![CDATA[频繁的全量复制（1）
伴随着系统的运行，master的数据量会越来越大，一旦master重启，runid将发生变化，会导致全部slave的全量复制操作

内部优化调整方案：

master内部创建master_replid变量，使用runid相同的策略生成，长度41位，并发送给所有slave
	在master关闭时执行命令shutdown save，进行RDB持久化，将runid与offset保存到RDB文件中
Repl-id repl-offset
	通过redis-check-rdb命令可以查看该信息
]]></description><category></category></item><item><title><![CDATA[redis高级之集群---主从复制（三）---心跳机制]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106526314</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106526314</guid><author>Rision666</author><pubDate>Wed, 03 Jun 2020 16:07:46 +0800</pubDate><description><![CDATA[心跳机制

进入命令传播阶段后，master与slave间需要进行信息交换，使用心跳机制进行维护，实现双方连接保持在线
	master心跳
	指令：PNG
		周期：由repl-ping-slave-period决定，默认10秒
		作用：判断slave是否在线
		查询：INFO replication 获取slave最后一次连接时间间隔，lag项维持在0或1视为正常
	
	slave心跳任务
	指令：REPLCONF ACK（offset）
		周期：1秒
		作用1：汇报slave自己的复制偏移量，.]]></description><category></category></item><item><title><![CDATA[redis高级之集群---主从复制（二）---工作流程及名词解释]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106524504</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106524504</guid><author>Rision666</author><pubDate>Wed, 03 Jun 2020 15:58:11 +0800</pubDate><description><![CDATA[今天我们就详细讲解一下主从复制的工作流程

主从复制工作流程

主从复制过程大体可以分为3个阶段

建立连接阶段（即准备阶段）
	数据同步阶段
	命令传播阶段
连接图及过程如下图，是slave主动连接master。大部分时间是slave给master发送指令，大致了解了它的工作流程，接下来我们进行详细解说。

     



阶段一：建立连接阶段

建立slave到master的连接，使master能够识别slave，并保存slave端口号

建立连接阶段工作流程

步骤一：设置maste...]]></description><category></category></item><item><title><![CDATA[redis高级之集群---主从复制（一）---简介和作用]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106520591</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106520591</guid><author>Rision666</author><pubDate>Wed, 03 Jun 2020 13:53:14 +0800</pubDate><description><![CDATA[今天我们就聊一下redis的高级知识，单台服务已经不能满足我们的需求，面对高并发、服务故障等问题，单台服务很显然力不从心。接下来我们先对主从复制有一个简单的了解，然后讲一下它的作用，为何会有主从复制，它到底解决了什么问题。

首先看一下讲解目录

什么是主从复制
	主从复制的作用
	主从复制工作流程
	三个阶段
		三个核心
		心跳机制
	
   4.常见问题

主从复制简介

主从复制即将master中的数据即时、有效的复制到slave中


	特征：一个master可以拥有多个slave，一个s...]]></description><category></category></item><item><title><![CDATA[redis使用场景之GEO---应用于地理位置的计算]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106411022</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106411022</guid><author>Rision666</author><pubDate>Thu, 28 May 2020 19:22:07 +0800</pubDate><description><![CDATA[在我们日常生活中有好多软件都用到了地理位置计算，比如：

火热的生活服务类软件

微信/陌陌

美团/饿了么

携程/马蜂窝

高德/百度

...

GEO类型的基本操作

添加坐标点

geoadd key longitude latitude member [longitude latitude member ...]

获取坐标点

geopos key member [member ...]

计算坐标点距离

geodist key membere1 member2 [unit]

演示操作如下]]></description><category></category></item><item><title><![CDATA[redis使用场景之HyperLogLog---应用于独立信息统计]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106410606</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106410606</guid><author>Rision666</author><pubDate>Thu, 28 May 2020 18:36:36 +0800</pubDate><description><![CDATA[如果我们统计不重复数据的数量，比如统计独立UV，我们会有如下方案：

原始方案：set

存储每个用户的id（字符串）

改进方案：bitmaps

存储每个用户状态（bit）

全新的方案：HyperLogLog

基数

首先我们来认识一下基数

{1,3,5,7,5,7,8}     基数集{1,3,5,7,8}      基数：5

Hyperloglog类型的基本操作

添加数据

pfadd key element [element...]

统计数据

pfcount k...]]></description><category></category></item><item><title><![CDATA[redis使用场景之Bitmaps---应用于信息统计状态]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106395965</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106395965</guid><author>Rision666</author><pubDate>Thu, 28 May 2020 09:01:24 +0800</pubDate><description><![CDATA[今天我们来学习一下bitmaps，bitmaps这个“数据结构”可以实现对位的操作。bitmaps本身不是一种数据结构，实际上就是字符串，但是它可以对字符串的位进行操作。

Bitmaps类型的基础操作

获取指定key对应偏移量上的bit值

getbit key offset

设置指定key对应偏移量上的bit值，value只能是1或0

setbit key offset value

注意：如果偏移量比较大，前面的位都是置0，所以我们可以减去一个公共数

Bitmaps类型的扩展操作

对指定ke]]></description><category></category></item><item><title><![CDATA[redis使用场景之sorted_set（二）---排行榜（计数器组合排序功能对应的排名）]]></title><link>https://blog.youkuaiyun.com/Rision666/article/details/106272720</link><guid>https://blog.youkuaiyun.com/Rision666/article/details/106272720</guid><author>Rision666</author><pubDate>Fri, 22 May 2020 09:20:14 +0800</pubDate><description><![CDATA[业务场景

票选广东十大杰出青年，各类综艺选秀海选投票

各类咨询网站top10（电影、歌曲、文档、电商、游戏等）

聊天室活跃度统计

游戏好友亲密度

业务分析

为所有参与排名的资源建立排序依据





解决方案

获取数据对应的索引（排名）

zrank key mumber

zrevrank key member

score值获取与修改

zscore key member

zincrby key increment member

接下来就进行实操一下



redis数据库里的展示形.]]></description><category></category></item></channel></rss>