string
redis的string是动态字符串,可以修改
底层结构,分为embStr和raw两种格式
较短的使用embStr存储,最多44字节,更长的使用raw格式存储。两种格式的底层结构不同。
emb
raw
list
底层数据结构:链表
- 插入、删除 O(1)
- 查询O(n)
- redis底层存储使用的不是简单的链表,使用了quicklist(快速链表:A doubly linked list of ziplists意思为一个由ziplist组成的双向链表)。
ziplist,压缩列表。它将所有的元素紧挨着一起存储,分配的是一块连续的内存。当数据量比较多的时候才会
改成 quicklist。因为普通的链表需要的附加指针空间太大,会比较浪费空间,而且会加重内存的碎片化。
set
Usage
api
redis support sadd,members…
1
2
3
4
5
6
7
8
9
10
11
12
13// using go-zero
go func() {
for {
s := time.Now().Second()
redis.Sadd("order_id"+strconv.Itoa(s), strconv.Itoa(s))
}
}()
tt := time.NewTicker(time.Second)
for now := range tt.C {
vs, _ := rr.Smembers("order_id" + strconv.Itoa(now.Second() ))
fmt.Println(now.Second(), vs)
redis.Del("order_id" + strconv.Itoa(now.Second()))
}
redis 安全
Reids 支持tcp,不支持ssl安全链接,可以通过ssl代理软件实现安全通讯,在公网使用时需要考虑加上ssl保证服务安全。
spiped:redis官方推荐的代理软件
会在客户端和服务器各启动一个spiped 进程。redis客户端和服务端通信需要通过sniped。单节点设置password
- config file:
- redis.conf (位置: /etc/redis.conf)
- setting:
- requirepass “hello world”
- 注意需要带上引号
- 这种设置方式需要重启redis
- 重启命令: sudo redis-server /etc/redis.conf
- config file:
集群
redis性能
指标查看
通过客户端执行info,可查看,加上参数可以查询特定指标,如memory查看内存相关的,包含:
- server: 查看 Redis 服务器信息,如 Redis 的版本
- clients: 客户端的连接部分
- memory: 内存消耗相关信息
- persistence: RDB和AOF相关信息
- stats: 一般统计
- replication: 主/从复制信息
- cpu: 统计CPU的消耗
- commandstats: Redis命令统计
- cluster: Redis集群信息
- keyspace: 数据库的相关统计
- modules: Module 相关信息
它也可以采取以下值: - all: 返回所有信息
- default: 值返回默认设置的信息
- everything: 包括 all 和 modules
key
- evicted_keys: 因为maxmemory限制被回收的key
- expired_keys:过期的key数量
- keyspace_hits: 在主字典中成功查找到key的次数
- keyspace_misses: 在主字典中查找key失败的次数
- 阿里云dms,redis监控图例