点击上方蓝字 关注我
1
不知道昨天讲完了Redis的strings之后大家感觉如何,那些命令有没有都尝试一下,然后有人问我那200多个命令是不是都需要记住,其实个人觉得必要不是很大,但是大概都要了解是必须的,不能说你接触一个设计的时候因为不知道redis的某些方面而和她擦肩而过,采用了别的相对不够便捷的设计方案,这样就不好了。
这里在补充一个Redis的知识点,Redis的string不要和c语言的字符串混淆,这是Redis自己实现的一种抽象类型,simple dynamic string简称sds,我们现在做一个最简单的操作,就是在redis-cli中,我们做最简单的set leslie handsome,这个时候键值对的键是一个字符串对象,对象的底层实现的一个保存着"leslie"的的sds,键值对的值也是一个字符串对象,对象的底层实现是一个保存着“handsome”的sds。
SDS不只是单纯的用来保存Redis数据库中的字符串值,还被用作缓冲区,AOF模块的AOF缓冲区,客户端状态的输入缓冲区,都是SDS实现的。关于SDS的具体作用和其与C字符串的区别,我们回头单独讲,还是很有意思的。
2
今天要讲的是另外一种数据结构list,也就是链表,在Redis的实现里,占有举足轻重的地位,列表键,发布和订阅,慢查询,监视器都是用链表实现的,等我们讲到各种功能的时候再一一讲解。
Redis的链表实现其实是一个双端链表,每个链表节点是有一个listNode结构来表示的,每个节点都有一个指向前置节点和后置节点的的指针。我们通过为链表设置不用的类型特定函数,就可以让Redis的链表保存不用的数据类型。
3
1 BLPOP key1 [key2 ] timeout
2 BRPOP key1 [key2 ] timeout
3 BRPOPLPUSH source destination timeout
4 LINDEX key index
5 LINSERT key BEFORE|AFTER pivot value
6 LLEN key
7 LPOP key
8 LPUSH key value1 [value2]
9 LPUSHX key value
10 LRANGE key start stop
11 LREM key count value
12 LSET key index value
13 LTRIM key start stop
14 RPOP key
15 RPOPLPUSH source destination
16 RPUSH key value1 [value2]
17 RPUSHX key value
这些命令都是很常见的大家一定都要试试,明天见喽
文 Leslie
排版 Leslie
图均源自网络
喜欢请转发,嘿嘿嘿