hsh

redis的缓存穿透,缓存雪崩,持久化方式

被刻印的时光 ゝ 提交于 2021-02-02 03:59:55
Redis redis是一个可进行持久化的内存数据库,可以支持string,list,hsh,set,zet这五种数据类型。 redis的性能很高(redis的读取速度可以达到11万次每秒,写的速度达到8万次每秒) redis【缓存穿透】 缓存穿透是指去查询一个一定不存在的数据,比如说我一共有100个商品,然后你偏偏去查询第101,102个这些不存在的商品,这个时候我们通常情况下就先回去redis里面去查询,但是redis里面就存在,所以就会去数据库中查询,如果大量的这种请求过来,那么就都落在了数据库上面,而数据库也不存在这样的数据,那么缓存就如同虚设,增加了数据库的压力。 解决方法: 为了解决这个问题,我们可以缓存空值,也就是说即便数据库中查询出来的数据不存在,也会缓存空值在reids的缓存中,这样下一次就可以走我们的缓存而不是数据库啦,但是太多的空值会占用我们的缓存的内存空间,导致内存的浪费,我们就通过给它设置一个过期时间比如3分钟,这样过了3分钟后存入的空值就会清空,释放空间,但是这样又出现另外一个问题,就是说如果有人在三分钟内加了一条数据,这个时候就有了第101条数据啦,但是当我们用户去查的时候,走的缓存而缓存中却还是空值,导致缓存中的数据和数据库中的数据不一致,为了解决这个问题我们可以在后台增加数据的时候,同时主动更新缓存中存在的数据,或者去删除缓存中的数据

redis的缓存穿透,缓存雪崩,持久化方式

假装没事ソ 提交于 2021-02-01 11:14:09
Redis redis是一个可进行持久化的内存数据库,可以支持string,list,hsh,set,zet这五种数据类型。 redis的性能很高(redis的读取速度可以达到11万次每秒,写的速度达到8万次每秒) redis【缓存穿透】 缓存穿透是指去查询一个一定不存在的数据,比如说我一共有100个商品,然后你偏偏去查询第101,102个这些不存在的商品,这个时候我们通常情况下就先回去redis里面去查询,但是redis里面就存在,所以就会去数据库中查询,如果大量的这种请求过来,那么就都落在了数据库上面,而数据库也不存在这样的数据,那么缓存就如同虚设,增加了数据库的压力。 解决方法: 为了解决这个问题,我们可以缓存空值,也就是说即便数据库中查询出来的数据不存在,也会缓存空值在reids的缓存中,这样下一次就可以走我们的缓存而不是数据库啦,但是太多的空值会占用我们的缓存的内存空间,导致内存的浪费,我们就通过给它设置一个过期时间比如3分钟,这样过了3分钟后存入的空值就会清空,释放空间,但是这样又出现另外一个问题,就是说如果有人在三分钟内加了一条数据,这个时候就有了第101条数据啦,但是当我们用户去查的时候,走的缓存而缓存中却还是空值,导致缓存中的数据和数据库中的数据不一致,为了解决这个问题我们可以在后台增加数据的时候,同时主动更新缓存中存在的数据,或者去删除缓存中的数据

牛客网NOIP赛前集训营-普及组(第一场)

我怕爱的太早我们不能终老 提交于 2020-10-28 18:19:55
前三题略 T4: 题目描述 小A有n个长度都是L的字符串。这些字符串只包含前8个小写字符,'a'~'h'。但这些字符串非常的混乱,它们几乎长得互不相同。小A想通过一些规则,让它们长得尽可能相同。小A现在有K次机会,他可以每次机会,可以选择一对字符x,y,让x,y变成等价的字符(注意这里x,y和字符'x', 'y'不是一样的,只是个代号)。注意,等价关系是有传递性的。比如小A让'a'和'b'等价, 'b'和'c'等价,那么'a'和'c'等价。 对于两个长度字符串P,Q是等价的,当且仅当对于每一位,P的字符和Q的字符都是等价的。 小A希望你告诉他,要怎么利用好这K次机会(当然可以不用完),使得尽可能多对字符串是等价的。注意每对字符串只能算一次。 数据包含10个数据点。每个数据点可能有不同的特性。 对于第1,2个数据点: 保证每个字符串只包含前4个小写字母 对于第3,4个数据点:每个字符串都只包含一种字母 对于第5,6个数据点:n<=10,L<=100 对于所有数据,满足:n <= 100, L <= 1000,K <= 28,每个字符串只包含前8个小写字母 题解: 普及组字符串??? 肯定枚举了。 关键点,只有8个字符!! K=28 有什么用?最多只要7个,就可以把所有都等价,就是n*(n-1)/2了。 所以,相当于是把a~h放进8-k个箱子里,每个箱子中的字符都是等价的。

【LOJ2321 「清华集训」2017无限之环】 题解

不打扰是莪最后的温柔 提交于 2020-04-28 09:15:05
在经过 \(n\) 个小时的奋斗后,LsWn 终于 AC 了这个毒瘤题。 题面传送门 如果你更喜欢洛谷的话戳这里 我们先看一个正确可以流通的图 (加上了黑白相间染色,然后黄色方块代表这个格子的上方,红色代表下方,紫色是左,灰色是右)(最后一行的上下画反了……凑活凑活)。 黑白染色网络流一贯的套路,将黑点流向白点,源点流向黑点,白点流向汇点,然后根据拆点一贯的套路,内部连边。(指一个点拆成五个点,中间和上下左右) 显然,合理的方案就是所有的黑点和白点互相匹配,即有完备匹配,也就是满流,没有一滴水漏出来。从黑点流出的点都有去处。 这是一个合法方案。那么如果出了点小差错,需要旋转呢? 这就很谔谔,右下角没法连通。但是我们可以旋转。我们观察到,左旋一次,相当于把右插头换成左插头。于是连费用为 \(1\) 的边。 右旋一次,相当于把下插头换成上插头,于是连边。。旋转两次,走两次旋转一次,故不连边。 现在讨论连边情况: 类似于 ┌ 上面已经讲过,不再陈述。 类似于 Q 如果左/右翻转,那么就等于插头向左/右换。翻转两次就是上下换,左右换。换两次的连边的费用是 \(2\) 。 类似于丨 不处理,因为不能转。 类似于 T 和 ┌ 比较相似。不过需要连上下边。 5 类似于 十 不处理,因为转了也没用。 然后总体 \(15\) 种情况还需一一分析……这就很毒瘤。这就放在代码中了。 一些细节:

SDOI2017 R2泛做

家住魔仙堡 提交于 2020-04-18 12:13:03
由于各种原因,在bzoj上我day1的题一题都没过,所以这里就直接贴loj的链接好了。 D1T1 龙与地下城 中心极限定理。 https://en.wikipedia.org/wiki/Central_limit_theorem 由于某些原因这里的公式挂了...直接看维基吧... 要算积分可以用标准库里的erf: https://en.wikipedia.org/wiki/Error_function 。 对于正态分布 ,值落在[-x,x]的概率为 ,所以落在[0,x]的概率就是这个值的一半,这玩意儿就可以直接当做不定积分了。 #include <iostream> #include <stdio.h> #include <math.h> #include < string .h> #include <time.h> #include <stdlib.h> #include < string > #include <bitset> #include <vector> #include < set > #include <map> #include <queue> #include <algorithm> #include <sstream> #include <stack> #include <iomanip> using namespace std; #define pb