- 博客(18)
- 收藏
- 关注
原创 Redis 实现缓存击穿的解决方案
互斥锁适合需要动态加载数据并避免并发请求压垮数据库的场景,能够有效地防止缓存击穿问题,但会增加一定的复杂性和响应时间。热点数据永不过期适合一些固定的热点数据,可以通过延长缓存时间甚至设为永不过期来避免缓存击穿。注意要及时更新数据,避免数据不一致。
2024-08-23 23:45:23
255
原创 Redis的6种限流算法
滑动窗口日志算法适用于需要精确控制请求频率的场景,例如API请求限流、金融交易频率控制等。不过,由于需要存储所有请求的时间戳,因此不适合高频请求的场景。漏桶算法适用于需要控制请求的流量速率的场景,例如 API 请求限流、流量控制、带宽管理等。该实现可以有效控制请求的速率,适合需要高性能和简单实现的场景。它的实现简单,适合不需要平滑流量控制的情况。这种实现可以用于需要平稳控制请求速率的场景,比如限制API请求的速率或限速下载。通过控制桶的容量和漏出的速率,可以实现不同的限流策略。
2024-08-23 23:06:18
673
原创 Redis防止缓存穿透的几种方式
布隆过滤器:用于快速检测不存在的key,减少无效查询。缓存空值:避免对数据库的重复查询压力。接口限流、熔断、降级:保护系统在高负载情况下的稳定性。通过合理组合这些策略,可以显著提升系统的稳定性和可用性,尤其是在高并发的环境中。
2024-08-23 22:22:33
300
原创 Redis 防止缓存雪崩的几种策略
以上策略可以在实际应用中灵活组合使用,以减少缓存雪崩的风险并保护数据库。通过分布式锁、缓存预热、双层缓存、定时更新、不同过期时间以及对热点数据的特殊处理,可以有效地控制缓存失效带来的压力。
2024-08-23 22:05:30
331
原创 结合了MySQL数据库、Elasticsearch和Redis,构建一个产品搜索和推荐系统
这个项目展示了如何使用PHP结合MySQL、Elasticsearch和Redis,构建一个功能齐全的产品搜索和推荐系统。你可以根据自己的需要进一步扩展这个项目。使用Composer安装Elasticsearch、Redis和数据库的依赖库。文件,存储数据库和Elasticsearch的配置信息。首先,我们需要创建两个表来存储产品信息和产品类别信息。4. 创建数据库连接和Elasticsearch客户端。5. Elasticsearch索引配置和数据同步。,即可看到产品搜索结果。在项目根目录下创建一个。
2024-08-21 20:02:33
344
原创 Redis地理位置相关应用
通过这种方式,Redis 用于快速的地理位置查询和距离计算,而 MySQL 则存储详细的位置信息。结合两者,可以实现高效的地理位置服务,适用于各种需要地理信息处理的场景,如本地搜索、物流跟踪等。
2024-08-21 19:20:52
322
原创 千万级别的数据导出Redis、php
多表分步查询:避免直接的多表联查,通过逐表查询并在应用层进行数据组合,以减少数据库的锁定风险Redis 缓存:在多表联查过程中使用 Redis 进行中间结果的缓存,减少数据库查询次数。yield生成器:通过 PHP 的yield生成器逐条处理数据,减少内存占用。分批导出:使用进行数据的分批写入,控制内存占用。
2024-08-21 18:58:05
387
原创 Redis 用于高效的队列管理和临时缓存,支持每分钟处理数千笔订单的高并发场景
为了支持高并发订单处理,并结合 MySQL 进行持久化,可以将 Redis 用于高效的队列管理和临时缓存,而 MySQL 用于最终数据存储。下面是一个结合 Redis 和 MySQL 的完整示例。
2024-08-21 15:05:45
403
原创 Redis实现秒杀
实现一个商品秒杀系统时,可以通过封装类来实现与 MySQL、Redis 的交互,并使用令牌桶算法来控制请求的速率,确保高并发下的系统稳定性。下面是一个示例,展示如何封装这三部分功能来实现商品秒杀。
2024-08-21 14:38:29
923
原创 Redis 实现计数器和限速器的
举例短信限制发送限制短信发送频率是一种常见的防止滥用和避免用户被骚扰的机制。通过 Redis 实现这一功能,可以有效控制同一个用户在特定时间内发送短信的次数。
2024-08-20 20:04:06
347
原创 Redis的set,实现交并补集,比如共同好友
通过 Redis 的 Set 结构,可以高效地计算好友列表的交集、并集和补集。与 MySQL 结合使用时,既可以利用 Redis 的高速性,又能保证数据的持久性。这样在需要高频次访问和计算的场景中,例如社交应用的好友管理,可以显著提高系统性能。
2024-08-20 19:55:47
280
原创 Redis 的 List存储一些列表型的数据结构,类似粉丝列表、文章列表
通过 Redis 的 List 结构,可以高效地实现类似粉丝列表、文章评论列表等顺序型数据的存储和管理。Redis 提供的 List 操作具有很好的性能,特别适用于需要快速插入和读取的大量数据场景,同时可以结合分页操作和数据持久化机制,确保系统的稳定性和数据的可靠性。
2024-08-20 19:46:59
313
原创 Redis 有序集合【实现排行榜】
通过 Redis 的 Sorted Set 实现实时排行榜,不仅操作简单、效率高,而且非常适合处理高并发的场景。将用户的分数与排名存储在 Redis 中,结合 MySQL 进行数据的持久化存储,可以在保证性能的同时确保数据的可靠性。
2024-08-20 19:35:19
459
原创 Redis 的 List 结构非常适合用于实现消息队列php
Redis 的 List 结构非常适合用于实现消息队列。你可以通过LPUSH或RPUSH命令将消息推入队列,通过BLPOP或BRPOP命令从队列中弹出消息。BLPOP和BRPOP命令支持阻塞操作,适合在消费者端等待消息的到来。通过 Redis 的 List 结构和 PHP 结合 MySQL 实现消息队列,可以将需要异步执行的操作(如任务队列、日志记录、订单处理)从主业务逻辑中解耦出来,提升系统的响应速度和稳定性。这种方式非常适合需要高性能和高并发处理的场景。
2024-08-20 19:27:33
534
原创 Redis 作为 PHP 的会话存储
通过将 PHP 会话数据存储在 Redis 中,可以实现分布式环境中的会话共享,并提升会话数据的读写效率。这种方式特别适用于需要跨多个服务器共享会话的应用程序,如负载均衡和高可用性系统。
2024-08-20 19:23:54
478
原创 Redis的页面缓存、对象缓存、查询结果缓存
通过结合 Redis 和 MySQL,可以显著提高 PHP 应用的性能。页面缓存适用于静态或不频繁变化的页面,对象缓存适用于频繁访问的对象数据,而查询结果缓存则能减少复杂查询的执行频率。各类缓存的生命周期应根据具体业务需求进行调整,以达到最佳的性能优化效果。:将频繁访问的对象(如用户信息、商品信息)缓存到Redis中,减少数据库查询。:将复杂的查询结果缓存到Redis中,避免重复计算,提高系统性能。:缓存整个页面的输出内容,以提高响应速度,减少服务器资源消耗。
2024-08-20 19:16:31
176
原创 数据库没有备份,数据被覆盖了,如何还原
数据库没有备份,数据被覆盖了,如何还原?这种情况下,可以通过日志来还原。先把数据库还原到上一时间段备份的版本。然后通过MYSQL提供的日志查看工具mysqlbinlog 来查看这指定时间段的操作记录:如,宝塔面板下装的数据库,都开启了二进制日志,通过以下命令就可以查到2018-05-11 18:11:10 到 2018-05-11 18:30:10 这段时间的 数据库的操作记录/www/s...
2018-08-03 09:35:46
8703
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人