在Redis中执行Lua脚本有两种方法:eval和evalsha。这两种方法的区别在于,是否要事先上传到reidis服务端,其中,eval不需要事先上传到服务端,而evalsha要将Lua脚本加载到Redis服务端。
文章主要介绍了使用 MySQL 时容易踩的 15 个坑,包括查询不加 where 条件、未使用索引、不处理 NULL 值、选错数据类型、深分页问题、未用 explain 分析查询、字符集设置不当、SQL 注入风险、事务问题、校对规则问题、过多使用 SELECT *、索引失效、频繁修改表或数据、未定期备份、忘了归档历史数据,并针对每个问题给出正例和反例,还提供了一些优化建议和解决办法。
本文主要介绍了 MySQL 中 InnoDB 的逻辑存储结构,包括两层架构、多种存储引擎(如 MyISAM 和 InnoDB)的特点与对比,InnoDB 将数据划分为页以提升性能,其逻辑存储结构包含表空间、段、区、页、行等。页又有文件头部、页面头部等部分,行有隐藏字段和不同行格式,还讲解了记录在页中的存储、页目录等相关内容。
本文深入介绍了 Redis 的多种底层数据结构,包括全局哈希表、SDS、双向链表、压缩列表、整数集合、跳表、listpack、quicklist 等,还阐述了 HyperLogLog 算法及其存储结构、计数缓存、源码解析,以及 GEO 的编码方式、与 zset 的关系等。
秒杀是一个非常典型的活动场景。比如双11、618等电商活动中,都会有秒杀的场景。秒杀场景的业务特点是限时限量,业务系统要处理瞬时的大量高并发操作,而Redis就经常被用来支撑秒杀活动。本文介绍了 Redis 支撑秒杀场景,包括秒杀活动对系统的要求,如瞬时并发访问量高、读多写少。阐述了基于原子操作和分布式锁支撑秒杀场景的方法,如原子操作通过 Lua 脚本实现,分布式锁需确保命令原子性及考虑多种情况,还对比了两种方式的优缺点。
本文解析了数据库事务的隔离级别与并发问题,包括排他锁、共享锁、范围锁等,介绍了脏读、不可重复读、更新丢失、幻读、写偏斜等现象,以及未提交读、已提交读、可重复读、串行化这四种隔离级别及其特点和实现方式。
这五个案例涵盖了 Elasticsearch 在全文搜索、日志分析、推荐系统、数据聚合与筛选、地理位置搜索等典型业务场景中的应用。通过合理的索引设计、灵活的查询与聚合功能,Elasticsearch 能够满足多种复杂场景下的高效数据检索与分析需求。
Redis 是一个开源的高性能键值对数据库,它以其内存中数据存储、键过期策略、持久化、事务、丰富的数据类型支持以及原子操作等特性,在许多项目中扮演着关键角色。以下是整理的17个Redis在项目中常见的使用场景.
在当今数据驱动的互联网时代,缓存成为了提升应用性能的关键技术。面对海量用户请求,如何通过缓存策略有效减轻数据库压力、降低响应延迟?本文深入探讨了缓存雪崩、缓存穿透、缓存击穿等常见问题,并提供了全面的解决方案。通过实际案例分析,揭示了缓存设计的最佳实践,确保数据一致性的同时,最大化系统吞吐量。让我们一起探索缓存的奥秘,为构建高效、稳定的系统架构打下坚实基础。
这篇文章我想和你聊一聊 Redis 的最佳实践。你的项目或许已经使用 Redis 很长时间了,但在使用过程中,你可能还会或多或少地遇到以下问题:我的 Redis 内存为什么增长这么快?为什么我的 Redis 操作延迟变大了?如何降低 Redis 故障发生的频率?日常运维 Redis 需要注意什么?部署 Redis 时,如何做好资源规划?Redis 监控重点要关注哪些指标?尤其是当你的项目越来越依赖 Redis 时,这些问题就变得尤为重要。