Go+Redis实现常见限流算法的示例代码
目录 固定窗口 滑动窗口 hash实现 list实现 漏桶算法 令牌桶 滑动日志 总结 限流是项目中经常需要使用到的一种工具,一般用于限制用户的请求的频率,也可以
Redis 2023年07月11日 151
目录 固定窗口 滑动窗口 hash实现 list实现 漏桶算法 令牌桶 滑动日志 总结 限流是项目中经常需要使用到的一种工具,一般用于限制用户的请求的频率,也可以
Redis 2023年07月11日 151
1.多次修改一个redis的String过期键,如何保证他仍然能保留第一次设置时的删除时间 对于修改String,redis有:set、setex、append、incr、decr等,其中,使用set、setex来修改原来存在的String,会重置原来设置过的过期时间,严格来说set、setex不是“修改”,而是覆盖,所以原来设置过的key-value,再次set/setex这个key就会覆盖掉
Redis 2023年07月11日 144
GO实现Redis的AOF持久化 将用户发来的指令以RESP协议的形式存储在本地的AOF文件,重启Redis后执行此文件恢复数据 https://github.com/csgop
Redis 2023年07月11日 159
在当前环境下,通常我们会首选redis缓存来减轻我们数据库访问压力。但是也会遇到以下这种情况:大量用户来访问我们系统,首先会去查询缓存, 如果缓存中没有数据,则去查询数据库,然后更新数据到缓存中,并且如果数据库中的数据发生了改变则需要同步到redis中,同步过程中需要保证 MySQL与redis数据一致性问题,在这个同步过程中出现短暂的数据延迟也是正常现象,但是最终需要保证mysql与缓存中的一致
Redis 2023年07月11日 156
可以用于复杂的数据处理和高效的数据查询。本文介绍了Redis的Lua脚本功能及其应用场景。 1. Redis Lua脚本概述 Redis的Lua脚本功能允许用户编写自定义脚本,在Redis服务器上执行。Lua是一种轻量级的脚本语言,具有简单、高效、可扩展等优点。在Redis中,Lua脚本可以用于复杂的数据处理,例如数据过滤、聚合、排序等,同时也可以提高Redis服务器的性能。 2. Re
Redis 2023年07月11日 141
摘要 Redis是一款性能强劲的内存数据库,但是在使用过程中,我们可能会遇到Big Key问题,这个问题就是Redis中某个key的value过大,所以Big Key问题本质是Big Value问题,导致Redis的性能下降或者崩溃。本文将向大家介绍如何排查和解决这个问题。 Big Key问题介绍 在Redis中,每个key都有一个对应的value,如果某个key的value过大,就会导致
Redis 2023年07月11日 150
缓存数据同步策略示意图 在大多数情况下,我们通过浏览器查询到的数据都是缓存数据,如果缓存数据与数据库的数据存在较大差异的话,可能会产生比较严重的后果的。所以,我们应该也必须保证数据库数据、缓存数据的一致性,这就是缓存与数据库的同步。 缓存数据同步策略 缓存数据同步,常见的有三种方式: 1:设置有效期 给缓存设置有效期,到期后自动删除。再次查询的时候,更新数据。 这种方式的优缺点及使用场景如下
一.多线程下引起的超卖问题呈现 1.1.我先初始化库存数量为1、订单数量为0 1.2.开启3个线程去执行业务 业务为:判断如果说库存数量大于0,则库存减1,订单数量加1 结果为:库存为-2,订单数量为3 原因:如下图所示,这是因为分别有6个指令(3个库存减1指令,3个订单数量加1指令)在redis服务端执行导致的。 namespace MengLin.Shopping.Redi
Redis 2023年07月11日 138
一、使用Jackson2JsonRedisSerializer序列化反序列化带泛型的List数据 1、使用Jackson2JsonRedisSerializer序列化value的代码: RedisTemplate<Object, Object> template = new RedisTemplate<Object,Object>(); template.setKey
Redis 中有删除单个 Key 的指令 del,但好像没有批量删除 Key 的指令,不过我们可以借助 Linux的 xargs 指令来完成这个动作 一.使用命令行批量删除redis的key 语法 ./redis-cli -h IP -p PORT -a PASSWORD -n NUM keys ‘key*’ | xargs ./redis-cli -h IP -p PORT -a PAS
Redis 2023年07月11日 153