这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记
考虑到后面做青训营抖音项目的时候可能会使用到Redis,因此决定学习一下Redis的使用和基本命令,让我们开始吧(使用Docker来搭建Redis)
Docker启动镜像
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
DEL key
Redis 也可以使用Expire给key设置过期时间,key 过期时间,可以单位以秒计expire,也可以以毫秒计时pexpire
当然一些其他的命令,例如查找符合模式的key,在key还没有过期的时候移除key的时间,随机返回一个key,修改key的名称。
Redis字符串命令 GETRANGE key start end 获取 key 中字符串的子串
STRLEN key 返回 key 对应value字符串值的长度。
希望在后续的项目开发中能够使用到Redis,go中也有现成的库可以调用,比如热度比较高的go-redis库
github.com/go-redis/redis