编程笔记

lifelong learning & practice makes perfect

redis base

string

redis的string是动态字符串,可以修改

底层结构,分为embStr和raw两种格式

较短的使用embStr存储,最多44字节,更长的使用raw格式存储。两种格式的底层结构不同。
  1. emb

  2. raw

list

底层数据结构:链表

  1. 插入、删除 O(1)
  2. 查询O(n)
  3. redis底层存储使用的不是简单的链表,使用了quicklist(快速链表:A doubly linked list of ziplists意思为一个由ziplist组成的双向链表)。
    ziplist,压缩列表。它将所有的元素紧挨着一起存储,分配的是一块连续的内存。当数据量比较多的时候才会
    改成 quicklist。因为普通的链表需要的附加指针空间太大,会比较浪费空间,而且会加重内存的碎片化。

set

Usage

  1. 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保证服务安全。

  1. spiped:redis官方推荐的代理软件
    会在客户端和服务器各启动一个spiped 进程。redis客户端和服务端通信需要通过sniped。

  2. 单节点设置password

    • config file:
      • redis.conf (位置: /etc/redis.conf)
    • setting:
      • requirepass “hello world”
      • 注意需要带上引号
      • 这种设置方式需要重启redis
      • 重启命令: sudo redis-server /etc/redis.conf
  3. 集群

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

  1. evicted_keys: 因为maxmemory限制被回收的key
  2. expired_keys:过期的key数量
  3. keyspace_hits: 在主字典中成功查找到key的次数
  4. keyspace_misses: 在主字典中查找key失败的次数
  5. 阿里云dms,redis监控图例

参考

  1. https://www.redis.com.cn/commands/info.html
  2. 缓存模式:Cache-Aside,Read-Through…

欢迎关注我的其它发布渠道