Redis 入门学习 | 青训营笔记

90 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

今天的课程介绍了 Redis 的原理,不过之前没怎么接触过 Redis,所以先自己从基本的命令开始学习。

Redis 的安装

跑大项目一直是在 WSL2 上跑的,所以 Redis 也安装在这个上面。在 Ubuntu 系统安装 Redis 可以使用以下命令:

# sudo apt update
# sudo apt install redis-server

启动 Redis

$ redie-server

查看 redis 是否启动?

$ redis-cli

以上命令将打开以下终端:

redis 127.0.0.1:6379>

127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令。

redis 127.0.0.1:6379> ping
PONG

以上说明我们已经成功安装了 redis。

Redis 基本数据类型

Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及 zset(sorted set:有序集合)。

String(字符串)

string 类型类似于哈希表,不过 Redis 的 string 是二进制安全的,可以保存任何对象。

下面是一个简单的用法,SET key value 表示设置键值对,GET key 表示查询对应的值。

127.0.0.1:6379> SET 测试 test
OK
127.0.0.1:6379> GET 测试
"test"

Hash(哈希)

Redis hash 是一个键值 (key=>value) 对集合。

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

下面是一个简单的实例,HMSET 设置了两个 field=>value 对, HGET 获取对应 field 对应的 value。

127.0.0.1:6379> HMSET ephmeral field1 "Hello" field2 "Word"
OK
127.0.0.1:6379> HMGET ephmeral field1
1) "Hello"
127.0.0.1:6379> HMGET ephmeral field2
1) "Word"

List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

127.0.0.1:6379> DEL ephmeral
(integer) 1
127.0.0.1:6379> lpush ephmeral redis
(integer) 1
127.0.0.1:6379> lpush ephmeral mongodb
(integer) 2
127.0.0.1:6379> lpush ephmeral rabbitmq
(integer) 3
127.0.0.1:6379> lrange ephmeral 0 10
1) "rabbitmq"
2) "mongodb"
3) "redis"

Set(集合)

Redis 的 Set 是 string 类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

下面是一个实例,sadd 命令向 key 中添加对应的值,注意这里是无序添加的,并且不能有重复的。

127.0.0.1:6379> DEL ephmeral
(integer) 1
127.0.0.1:6379> sadd ephmeral redis
(integer) 1
127.0.0.1:6379> sadd ephmeral mongodb
(integer) 1
127.0.0.1:6379> sadd ephmeral rabbitmq
(integer) 1
127.0.0.1:6379> sadd ephmeral rabbitmq
(integer) 0
127.0.0.1:6379> smembers ephmeral
1) "mongodb"
2) "redis"
3) "rabbitmq"

zset(sorted set:有序集合)

Redis zset 和 set 一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。zset 的成员是唯一的,但分数 (score) 却可以重复。

下面是一个实例,zadd key score value 表示将值以及分数添加 key 中去。

127.0.0.1:6379> DEL ephmeral
(integer) 1
127.0.0.1:6379> zadd ephmeral 0 redis
(integer) 1
127.0.0.1:6379> zadd ephmeral 1 mongodb
(integer) 1
127.0.0.1:6379> zadd ephmeral 2 rabbitmq
(integer) 1
127.0.0.1:6379> zadd ephmeral 2 rabbitmq
(integer) 0
127.0.0.1:6379> zrangebyscore ephmeral 0 1000
1) "redis"
2) "mongodb"
3) "rabbitmq"

这里简单学习一个基本的数据类型,至于更加详细的用法等需要的时候再去看看。

参考资料