使用redis实现分布式令牌桶算法:团队接了个根据告警的进行处理的需求,需要限制这个处理的速度,比如说一个小时只能最多处理三个,防止在晚上出现大量不可控变更影响。令牌桶算法原理可以参照,k8s限速队列、令牌桶原理可以参照k8s限速队列。问题描述限速队列在单实例的环境下用go可以很方便实现,大概是使用一个定时任务来轮询。设定一个根据补充间隔设定定时任务要是bucket是满的就直接更新时间并返回,bu
转载 2023-07-06 23:06:02
64阅读
## 实现Go Redis前缀匹配的步骤 为了实现Go Redis的前缀匹配,我们可以按照以下步骤进行操作: 1. 连接到Redis数据库 2. 设置键值对 3. 使用前缀匹配获取匹配的键值对 4. 处理返回的匹配结果 下面是每一步的详细说明。 ### 1. 连接到Redis数据库 首先,我们需要使用Go语言的Redis客户端库连接到Redis数据库。在Go语言中,可以使用`github
原创 2023-08-16 04:15:00
408阅读
介绍Redis是一个开源的内存中键值数据存储。它带有几个命令,可以帮助您进行故障排除和调试。由于Redis具有内存中的键值存储的性质,因此其中许多命令都集中在内存管理上,但是还有一些其他命令对于概述Redis服务器的状态很有用。本教程将提供有关如何使用其中一些命令来帮助诊断和解决使用Redis时可能遇到的问题的详细信息。如何使用本指南本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的
redis从海量的key里面查询出某一固定前缀的key
转载 2023-06-25 21:17:42
464阅读
原来太看得起自己写了一篇详细篇,后来发现我只是把书上的话重新抄了一遍,结果写到后面自己都云里雾里了,所以我把那篇删掉重写。这篇文章的重点是简单介绍 Redis 的这些特性,但是不涉及具体的操作,那不是我的能力之内的,我也没自信讲清楚,适合第一次接触 Redis,想先了解一个大概的人。第七章--持久化我们知道 Redis 是缓存在内存中的,数据库关闭或者服务器关闭都会导致数据的丢失,所以 Redis
在使用Redis中的有序集合(zset)时,我们经常需要通过key来获取特定的数据。然而,有一个重要的限制就是zset的key不能接受模糊匹配。这意味着我们不能像在某些数据库中那样使用通配符来匹配多个key。 举个例子,在使用Redisgo语言客户端时,我们想要从zset中获取特定范围内的数据,但是无法直接通过模糊匹配来实现。这就需要我们通过其他方法来解决这个问题。 下面我们来看一段go语言
原创 2024-03-23 08:20:23
76阅读
学习别人的知识,然后自己也分不清是记住了还是理解了,然后就写一写,发现看过的会了,和自己写一遍还是有差别的,希望自己这次可以坚持的好点,加油!思路:先查询redis中是否有缓存的数据,如果没有,就查询mysql数据库,查询到数据后,将查询到的数据写到redis中,设置expire超时时间。 注意点:从数据库中查询到的结果是结构体切片,所以需要先定义一个结构体,这个结构体和查询出的数据的字段对应,注
转载 2023-05-26 15:07:31
96阅读
说明录入:是将录入字符的String 的各个char 的ASCII码转为16进制 在通过-拼接起来,通过zadd新增 score设置为0 则会通过value 16进制进行排序查找将查找的字符转换为16进制通过-拼接 start计算:通过匹配字符16进制最后以为进1算出起始16进制 再+g 包括所有起始范围end计算:通过匹配字符16进制+g 包括所有范围然后zadd临时加入到redis
转载 2023-08-01 20:03:06
202阅读
Redis遍历、模糊匹配key的两个命令keys、scan(python使用Redis)(1)全量遍历–keys命令获取Redis中的所有键:import redis pool=redis.ConnectionPool(host='10.3.1.151',port=6379,password='mca321',db=2) r = redis.tRedis(connection_poo
转载 2023-06-01 09:17:34
138阅读
如果使用redis的频次较高,那么业务中经常会出现需要根据关键字进行批量查询,所以总结一下StackExchange中使用批量查询的方法(如果数据量很大,那么在redis中模糊查询很耗时,请慎用!)初始化redis连接对象:           string _connectionString = ConfigurationManager
转载 2023-05-22 15:41:50
97阅读
先下载redis的包go get -u github.com/go-redis/redis/v8  代码实现//redis import ( "context" "fmt" "github.com/go-redis/redis/v8" "time" ) var rdb *redis.Client //初始化链接 func initClient() (err error) { rdb
转载 2023-07-03 16:45:15
102阅读
最近遇到一个有意思的关于分布式锁的问题,期间产生了有很多有意思的问题和讨论,这里记录一下。在大多数场景下很多程序员都喜欢使用redis来做分布式锁,但是公司内最近缓存服务为了推行标准化禁用了lua脚本,使得原有的分布式锁实现都要另谋出路,最后选择了zk来做分布式锁,因为go-zookeeper只支持阻塞锁,做了一些改造使其支持非阻塞和待失效时间的锁,有类似需求的同学也可以参考下https://gi
转载 2023-08-15 18:09:32
66阅读
Redis的事务,Go+luaRedis 事务Redis的基本事务(basic transaction)需要用到MULTI命令和EXEC命令,这种事务可以让一个客户端在不被其他客户端打断的情况下执行多个命令。和关系数据库那种可以在执行的过程中进行回滚(rollback)的事务不同,在Redis里面,被MULTI命令和EXEC命令包围的所有命令会一个接一个地执行,直到所有命令都执行完毕为止。当一个事
转载 2023-09-10 21:50:06
92阅读
keys *  返回所有的keykeys h?llo 类似数据库的匹配使用keys h*lleo 类似数据库的匹配使用keys h[ae]llo  只能是a或e的匹配 一次设置多个keysmset one 1 two 2 three 3 four 4
# Go语言括号匹配程序的实现 ## 一、项目概述 括号匹配是编程中常见的问题,尤其在解析表达式、语法分析等情境中。本文将详细介绍如何用 Go 语言实现一个括号匹配程序。整个过程将包括以下几个步骤: | 步骤 | 描述 | | --- | --- | | 1. 定义括号匹配的逻辑 | 设计算法,明确匹配规则 | | 2. 编写代码 | 使用 Go 语言实现算法 | | 3. 测试程序 | 验
原创 8月前
60阅读
## Go语言正则匹配多个 ### 简介 正则表达式是一种强大的文本匹配工具,Go语言标准库中的`regexp`包提供了对正则表达式的支持。本文将介绍如何使用Go语言的正则表达式匹配多个内容。 ### 步骤 整个过程可以分为以下几个步骤: | 步骤 | 描述 | | ---- | ---- | | 1 | 创建正则表达式 | | 2 | 匹配多个内容 | | 3 | 获取匹配结果 |
原创 2023-08-20 07:46:10
414阅读
@目录1. 字节数组2. 头尾处理3. 位置索引4. 替换5. 统计次数6. 重复7. 大小写8. 去除字符9. 字符串切片处理10. 数值处理1. 字节数组字节与字符的区别字节(Byte) 是计量单位,表示数据量多少,是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位字符(Character) 是计算机中使用的字母、数字、字和符号,比如'A'、'B'、'$'、'&'
验证下映射到分片的hash算法--------------------0.原子操作,要么都成功,要么都失败,集群不支持TxPipeli用连接池...
原创 2023-02-23 08:57:24
66阅读
最近翻阅了几本跟Redis相关的书籍,比如《Redis设计与实现 第二版》和钱老师的《Redis深度历险:核心原理与应用实践》,想着Redis的核心功能无非就是操作数据嘛,就像做一个Go语言版的Redis,不仅提升了对Redis源码的了解,也提高了Go语言的编码能力,说干就干。代码地址:JaricY/miniRedis (github.com)选用Go的原因是因为Go相对于C语言提供了更多的高级
转载 2024-05-15 04:02:20
29阅读
缓存缓存是我们开发过程中必不可少的一项提供接口性能的方式,但是,对项目引入缓存也会带来问题,比如缓存穿透,HotKey,缓存雪崩,缓存击穿,缓存一致性的问腿。所以,我们可能在缓存库中加入一些解决方案。设计的目标我们的目标是设计一个通用的缓存库。设计的目标如下基本操作提供基础操作,创建和删除缓存。// Cache ... type Cache interface { Set(ctx context
转载 2023-10-19 23:18:14
115阅读
  • 1
  • 2
  • 3
  • 4
  • 5