限量核心代码:limit.go
type Limit struct {
Name string
Key string
Rate int64
Max int64
Default int64
}
func (l *Limit) Add(a, b float64) float64 {
return a + b
}
//...
redis目前还不支持批量删除key的命令,但是我们有时需要删除符合某个规则的keys,可以利用 Linux 命令查询出所有的key,然后一次性删除。
完整命令:
./redis-cli -h 127.0.0.1 -n 1 -a 123456 --no-auth-warning keys "jackey:20...
package main
import (
"fmt"
"github.com/go-redis/redis"
"time"
)
// 定义redis链接池
var RedisTest *redis.Client
// 初始化redis链接池
func init() {
RedisTest = redis.NewClient(&redis.Options...
检查连接是否正常
PING
使用客户端向 Redis 服务器发送一个 PING ,如果客户端与服务器之间的连接正常,并且服务器的运作也正常的话,那么命令将返回一个 PONG 。
通常用于测试网络连接和服务器状态,或者用于测量延迟值。
...
持久化
因为 Redis 服务器将数据储存在内存里面,而一旦服 务器被关闭、或者运行服务器的主机本身被关闭的话,储存在内存里面的数据就会消失不 见。
如果我们仅仅是将 Redis 用作缓存的话,那么这种数据丢失带来的问题并不是非常...
配置选项
Redis 服务器提供了一些配置选项(configuration option),通过修改这些选项的值,可以改变选项对应功能的行为。
举个例子,前面介绍 SELECT 命令时曾经说过,Redis 服务器默认会创建 0 号至 15 号共十六个数据库以供用...
创建用户账号
注册一个新的微博账号,有三样信息是必须的:
1. 邮箱地址,不能和已有的 邮箱地址相同(实际上也可以使用手机来注册,但 这里只考虑邮箱)。
2. 密码
3. 名字,不能和已有的名字相同。
需要解决的问题:
1. 实现...
Redis 从 2.6 版本开始在服务器内部嵌入了一个 Lua 解释器,使得用户可以在服务器端执行 Lua 脚本。
这个功能有以下好处:
1. 使用脚本可以直接在服 务器端执行 Redis 命令,一般的数据处理操作可以直接使用 Lua 语言或者Lua 解释器...
事务
Redis 的事务功能允许用户将多个命令包裹起来,然后一次性地、按 顺序地执行被包裹的所有命令。保证部分的原子性。
Redis已经子系统内部进行了功能的简化,这样可以保证更快的运行速度,因为Redis不需要事务的回滚能力。
在事...
go-redis对redis执行批量操作的类是Pipeliner,具体示例如下.
运行该示例可在redis服务端依次接收到:
MULTI
incr tx_pipeline_counter
expire tx_pipeline_counter 3600
EXEC
多条命令采用批量处理不止节省网络时...
发布与订阅功能
Redis 的发布与订阅功能可以让用户将消息同时发送给多个客户端。
这个功能由几个不同的角色 协作组成:
• 发布者(publisher):发布消息的客户端。
• 频道(channel):构建在服务器内部,负责接收发布者发送的消...
键过期功能的相关命令
设置生存时间: EXPIRE 命令和 PEXPIRE 命令。
设置过期时间: EXPIREAT 命令和 PEXPIREAT 命令。
查看剩余生存时间: TTL 命令和 PTTL 命令。
删除生存时间或过期时间: PERSIST 命令。
设置...
HyperLogLog 介绍
HyperLogLog 可以接受多个元素作为输入,并给出输入元素的基数估算值:
• 基数:集合中不同元素的数量。比如 {'apple', 'banana', 'cherry', 'banana', 'apple'} 的基数就是 3 。
• 估算值:算法给出的基数并不是...
有序集合(zset)
有序集合和集合一样,都可以包含任意数量的、各不相同的元素( element),不同于集合的是,有序集合的每个元素都关联着一个浮点数格式的分 值(score),并且有序集合会按照分 值,以从小到大的顺序来排列有序集合...
集合(set)
Redis 的集合以无序的方式储存多个各不相同的元素。
用户可快速地向集合添加元素,或者从集合里面 删除元素,也可以对多个集合进行集合运算操作,比如计算并集、交集和差集。
添加元素
SADD key element [element ......