模块一:基础

redis 是基于内存的KV非关系型数据库。

redis基本数据类型有:String,list,hash,set,zset。

redis的使用场景有:缓存,计数器(String自增自减)。

  • redis启动过程

先去/usr/local/bin打开redis-server

然后启动redis-cli(redis的客户端)就可以了

默认进入0号数据库。

  • redis为什么快

基于内存

数据结构简单

采用单线程

多路复用IO

  • 基本的数据结构

String:

普通的KV字符串,一个k对应一个v。

set me syyyj
get me

结果输出了syyyj。

List:

简单的字符串集合。按插入顺序来排序,可头插(L)可尾插(R)

rpush me syyyj
//输出1
rpush me syj
//输出2
rpush me syjjj
//输出3
rrange me
//输出
//"syyyj"
//"syj"
//"syjjj"

Hash:

映射表操作

hmset set okk me nb we upup
hget okk me
//输出nb
hget okk we
//输出 upup

出现hash冲突的解决方式和hashmap一样,用拉链法解决hash冲突,不过没有红黑树。

set:

String类型的无序集合。

集合是用hash来实现的,所以增删查都是O(1)。

使用sadd的时候,返回1是成功,返回0是已存在。

sadd key value;
//输出1
sadd key value2;
//输出1
sadd key value;
//输出0
smembers key:
//输出
//"value"
//"value2"

Zset:

关于String的有序集合,底层使用跳表来实现

同时不可以重复。

运用每个项的得分来排序,从小到大排序。

集合是用hash来实现的,所以增删查都是O(1)。

使用zadd的时候,返回1是成功,返回0是已存在。

zadd key score member 基本示范。
zadd vv 0 me
zadd vv 1 me2
zadd vv 2 me3
ZRANGE vv 0 1000

模块二:事务

redis的事务是非原子性的,所以也不会回滚,如果要实现回滚,要用命令watch。

  • redis的事务基本命令

multi 创建事务

exec 启动事务

discard 关闭事务

watch < KEY > 监听key

unwach 取消所有监听

  • 如何实现事务?

使用watch命令监听某个key,如果事务中使用这个key,同时监听到这个key发生变化,事务则会发送回滚。如果key没有变化,则继续下去,同时这个watch会没掉。所以watch监听只会用一次。