随笔分类 -  Redis

摘要:在使用redis队列处理的时候,有时候队列过长会遇到超时的情况。 原因分析:查看了下php.ini文件里面有个参数default_socket_timeout = 60,就是这个配置导致redis过60秒会自动断开。这个配置是什么意思?default_socket_timeout是socket流的超 阅读全文
posted @ 2023-09-30 17:05 温柔的风 阅读(352) 评论(0) 推荐(0) 编辑
摘要:一致性哈希是在哈希取余算法基础之上优化的,分布式缓存数据变动和映射问题,某个机器宕机了,分母数量改变了,自然取余数不对了。用于解决分布式缓存系统中的数据选择节点存储问题和数据选择节点读取问题以及在增删节点后减少数据缓存的消失范畴,防止雪崩的发生。 哈希槽是在redis cluster集群方案中采用的 阅读全文
posted @ 2022-06-21 20:56 温柔的风 阅读(1239) 评论(0) 推荐(1) 编辑
摘要:首先考虑需要安装的redis版本,我这里是安装的redis 6.0.16,如果宿主机没有,那么就docker pull redis:6.0.16 [root@localhost Docker_redis]# docker images REPOSITORY TAG IMAGE ID CREATED 阅读全文
posted @ 2022-06-20 10:58 温柔的风 阅读(212) 评论(0) 推荐(0) 编辑
摘要:redis单线程又加入了多线程 redis 发展史 redis 2.6 (2012年10月支持lua脚本)redis 3.0 (2015年4月官方集群方案)redis 4.0 (2017年7月混合持久化、多线程异步删除)redis 5.0 (2018年10月核心代码重构)redis 6.0 (202 阅读全文
posted @ 2021-11-12 14:49 温柔的风 阅读(146) 评论(0) 推荐(0) 编辑
摘要:场景 在一些电商项目中,对一些过期的订单以及优惠券等业务需要做后续处理 方案 定时扫描数据库,通过扫描到符合条件的数据做特定处理(成本高) 通过redis的监听订阅做处理(成本低) 实践准备 开启事件通知,redis 版本大于 2.8,修改配置文件 需要订阅主题(__keyevent@dbindex 阅读全文
posted @ 2021-09-26 11:34 温柔的风 阅读(1145) 评论(0) 推荐(0) 编辑
摘要:基于数据库实现分布式锁要实现分布式锁,最简单的方式就是创建一张锁表,然后通过操作该表中的数据来实现。当我们要锁住某个资源时,就在该表中增加一条记录,想要释放锁的时候就删除这条记录。数据库对共享资源做了唯一性约束,如果有多个请求被同时提交到数据库的话,数据库会保证只有一个操作可以成功,操作成功的那个线 阅读全文
posted @ 2021-01-25 10:05 温柔的风 阅读(446) 评论(0) 推荐(0) 编辑
摘要:存储介质不同 redis queue数据是存储在内存,虽然有AOF和RDB的持久化方式,但是还是以内存为主。kafka是存储在硬盘上 性能不同 因为存储介质不同,理论上redis queue的性能要优于kafka,但是在实际使用过程,这块体验并不是很明显,通常只有一些高并发场景下需要用redis q 阅读全文
posted @ 2020-06-22 08:59 温柔的风 阅读(901) 评论(0) 推荐(0) 编辑
摘要:比如讲数据存储在了 Redis 的有序集合 user_score 中,使用 Redis 来统计玩家排行榜的数据。 首先我们需要思考的是,一个典型的游戏排行榜都包括哪些功能呢? 统计全部玩家的排行榜按名次查询排名前 N 名的玩家查询某个玩家的分数查询某个玩家的排名对玩家的分数和排名进行更新查询指定玩家 阅读全文
posted @ 2018-10-10 17:15 温柔的风 阅读(1541) 评论(0) 推荐(0) 编辑
摘要:<?php header("content-type:text/html;charset=utf-8"); $redis = new redis(); $result = $redis->connect('127.0.0.1', 6379); $gots = $redis->get("gots"); 阅读全文
posted @ 2018-10-08 20:44 温柔的风 阅读(634) 评论(0) 推荐(0) 编辑
摘要:拒绝bigkey,防止网卡流量、慢查询、阻塞 如何寻找bigkey? redis-cli自带--bigkeys,例如:redis-cli -h -a --bigkeys 获取生产Redis的rdb文件,通过rdbtools分析rdb生成csv文件,再导入MySQL或其他数据库中进行分析统计,根据si 阅读全文
posted @ 2018-10-04 10:55 温柔的风 阅读(163) 评论(0) 推荐(0) 编辑
摘要:应用场景: 用户签到 用户在线状态 统计活跃用户 各种状态值 自定义布隆过滤器 点赞功能 说明: 用string类型作为底层数据结构实现的一种统计状态的数据类型。 位图本质是数组,它基于string数据类型的按位操作。该数组由多个二进制位组成,每个二进制位都对应一个偏移量(可以成为一个索引或者位格) 阅读全文
posted @ 2018-10-01 23:00 温柔的风 阅读(107) 评论(0) 推荐(0) 编辑
摘要:就比如一个大型的网站会少不了大量的用户访问,就比如天猫的uv访问统计,一个用户一天内访问多次顶多算一次uv;淘宝、天猫首页的uv平均每天是1~1.5亿左右;,每天存1.5亿个用户的ip,访问者来了先去查是否存在,不存在则写入,那么这个存储得占多大空间?另外统计的读取速度又能保证达到预期吗? 这里可能 阅读全文
posted @ 2018-09-30 23:08 温柔的风 阅读(162) 评论(0) 推荐(0) 编辑
摘要:发生的原因 redis主机挂了,redis全盘崩溃 比如缓存中突然有大量的key同时过期 解决 redis集群实现高可用,主从+哨兵 ehcache本地缓存+Hystrix或者阿里sentinel限流&降级 开启redis持久化aof/rdb,尽快恢复缓存 阅读全文
posted @ 2018-09-30 20:00 温柔的风 阅读(57) 评论(0) 推荐(0) 编辑
摘要:什么是缓存击穿? 是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时查询一个key时,缓存没读到数据,因为缓存失效了,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。 如何解决? 对于频繁访问的热点key干脆不设置过期时间 互斥独占锁防止击穿 多级缓存 阅读全文
posted @ 2018-09-30 15:34 温柔的风 阅读(101) 评论(0) 推荐(0) 编辑
摘要:布隆过滤器的算法,用来判断一个元素是否在一个集合中。这种算法由一个二进制数组和一个Hash算法组成。 它的基本思路如下: 把集合中的每一个值按照提供的Hash算法算出对应的Hash值,然后将Hash值对数组长度取模后得到需要计入数组的索引值,并且将数组这个位置的值从0改成1。在判断一个元素是否存在于 阅读全文
posted @ 2018-09-30 13:52 温柔的风 阅读(291) 评论(0) 推荐(0) 编辑
摘要:三大删除策略 redis在删除过期key的时候,不可能时时刻刻都遍历所有被设置过期时间的key来检测数据是否已经达到过期时间,然后再对它进行删除。所以有三种删除的方式 立刻删除 惰性删除 定期删除 一、立刻删除 立刻删除能保证内存中数据的最大新鲜度,因为它保证过期键值会在过期后马上被删除,其所占用的 阅读全文
posted @ 2018-09-29 19:54 温柔的风 阅读(353) 评论(0) 推荐(0) 编辑
摘要:一、简单的字符串缓存 比如针对一些sql查询较慢,更新不频繁的数据进行缓存。 <?php $redis = new Redis(); $redis->connect('127.0.0.1', 6379, 60); $sql = 'select * from tb_order order by id 阅读全文
posted @ 2018-09-28 23:47 温柔的风 阅读(370) 评论(0) 推荐(0) 编辑
摘要:短连接的好处 简单方便,利于推广 http传输好了很多,有助于带宽节约和高并发 防止尾巴参数泄密,不安全 大概实现流程 短连接算法(新浪短连接算法),一对四,生成四个链接,随机取出一个 映射匹配(redis的hash或者string),如用hash存储,key=加密串,value=真实url 短链接 阅读全文
posted @ 2018-09-28 20:44 温柔的风 阅读(144) 评论(0) 推荐(0) 编辑
摘要:整体流程 发 抢 记(记录谁抢了多少、防止重复抢、如果红包到期没抢完,需要退回) 红包算法,保证每个红包大致有个范围,大家抢的差不多 需求举例 各种节假日,发红包+抢红包,100%对并发有要求,不能使用mysql 一个总的大红包,会有可能拆分成多个小红包,总金额=分金额1+分金额2....分金额N 阅读全文
posted @ 2018-09-28 16:06 温柔的风 阅读(161) 评论(0) 推荐(0) 编辑
摘要:特性 消息发布者,即publish客户端,无需独占链接,你可以在publish消息的同时,使用同一个redis-client链接进行其他操作 消息订阅者,即subscribe客户端,需要独占链接,即进行subscribe期间,redis-client无法穿插其他操作,此时client以阻塞的方式等待 阅读全文
posted @ 2018-09-27 22:11 温柔的风 阅读(388) 评论(0) 推荐(0) 编辑