背景介绍 一直好奇为什么 Redis 处理速度这么快,很大部分是因为数据结构设计的好,所以学习一下 Redis 数据结构的底层实现。 Redis 发展到现在已经有 9 种数据类型了,其中最基础、最常用的数据类型有 5 种,它...
Redis
【需求变更】使用 Redis 和 Lua 脚本实现变更后方案编号的生成
项目有部分需求变更,比如之前使用的 MyBatis-plus 封装的雪花算法,但现在一些业务比如某些方案编号,需要以特定格式生成,现在文件编号要求以 年-月-4位序号 的格式生成,当年或月变化时,4位序号需要重置,比...
Redis分布式锁的实现和分析
关于 synchronized 项目单独部署时,使用 synchronized 可以实现并发安全,但如果项目搭建集群时,有多个线程同时对某项目中的数据修改时,可能会出现并发问题。 synchronized 关键字底层是 JVM 中的 monitor(管...
Redis实现持久化和集群的搭建
一、Redis的持久化方案 1)RDB持久化 RDB(Redis Database Backup file),Redsi数据备份文件或Redis数据快照。 把内存中的所有快照文件称为RDB文件,默认是保存在当前运行目录。 RDB持久化在四种情况下会执行: ...
Redis中的缓存雪崩
缓存雪崩 🤔现象分析 缓存雪崩是指在同一时段大量的缓存key同时失效或者缓存服务(Redis等)宕机,导致大量请求到达数据库,带来巨大压力。 👊 解决方案 利用Redis集群提高服务的可用性,避免缓存服务宕机 给缓存业...
Redis中的缓存击穿
缓存击穿 缓存击穿问题也叫热点key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大压力。 🤔现象分析: 当线程1查询缓存时,未命中,于是从数据库中查...
Redis中的缓存穿透
缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,导致这些请求直接到了数据库上,对数据库造成了巨大的压力,可能造成数据库宕机。 解决方案 1)缓存无效 key 如果缓存和数据库中都查不到某...
RedisTemplate的默认序列化方式及改进【二】
尽管JSON的序列化方式可以满足我们的要求,但依然存在一些问题,如图: 为了在反序列化时知道对象的类型,JSON序列化器会将类的 class类型写入 json 结果中,存入 Redis,会带来额外的内存开销。 为了节省内存空...
RedisTemplate的默认序列化方式及改进【一】
public class SpringDataRedisStringTemplateTests{ @Autowired private RedisTemplate redisTemplate; @Test void testString() { redisTemplate.opsForValue().set("name",&...