Redis学习笔记 | 青训营笔记

110 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记

考虑到后面做青训营抖音项目的时候可能会使用到Redis,因此决定学习一下Redis的使用和基本命令,让我们开始吧(使用Docker来搭建Redis)

Docker启动镜像 image.png

Redis理论

在Redis中一共有9 种数据结构
1.SDS
简单动态字符串类型,可以在o(1)的时间内取出字符串的长度,同时也是String的底层实现
2.双向链表
顾名思义,双向均可遍历的链表
3.压缩列表
内存紧凑
4.Hash表
空间换时间,可以在o(1)时间内查询出数据位置
5.skiplist
很有意思的一种数据结构,通过随机化冗余多层节点的方式来加速链表的查找过程
跳表源码

typedef struct zskiplistNode {
    //  Zset 对象的元素值
    sds ele;
    // 元素权重值
    double score;
    // 后向指针
    struct zskiplistNode *backward;
  
    //节点的level数组,保存每层上的前向指针和跨度
    struct zskiplistLevel {
        struct zskiplistNode *forward;
        unsigned long span;
    } level[];
} zskiplistNode;

6.整数集合
7.quicklist
8.listpack

常用Redis命令实操

SET key value

image.png

DEL key

image.png

Redis 也可以使用Expire给key设置过期时间,key 过期时间,可以单位以秒计expire,也可以以毫秒计时pexpire

当然一些其他的命令,例如查找符合模式的key,在key还没有过期的时候移除key的时间,随机返回一个key,修改key的名称。

Redis字符串命令 GETRANGE key start end 获取 key 中字符串的子串

STRLEN key 返回 key 对应value字符串值的长度。

image.png

希望在后续的项目开发中能够使用到Redis,go中也有现成的库可以调用,比如热度比较高的go-redis库

github.com/go-redis/redis