请选择 进入手机版 | 继续访问电脑版
MSIPO技术圈 首页 IT技术 查看内容

Redis 五种基本数据结构及基本使用

2023-07-13

一、数据结构

二、使用

2.1 String 的使用

Redis String 一个键对应一个值,并且是二进制安全的,值可以是图片或者序列化后的对象。

一个键最大能存储 512 MB。

2.1.1 set 命令的使用

  • set key value
    127.0.0.1:6379> set name yunhu
    OK
    127.0.0.1:6379> get name
    "yunhu"
    
  • 重复对同一个键设置值,导致覆盖
    127.0.0.1:6379> set age 15
    OK
    127.0.0.1:6379> set age 20
    OK
    127.0.0.1:6379> get age
    "20"
    
    15 已经被覆盖了。
  • set key value nx
    • 当 key 不存在时,返回 OK 表示设置成功
      127.0.0.1:6379> get year
      (nil)
      127.0.0.1:6379> set year 2020 nx
      OK
      127.0.0.1:6379> get year
      "2020"
      
    • 当 key 存在时,设置失败返回 nil 值。
      127.0.0.1:6379> get year
      "2020"
      127.0.0.1:6379> set year 1978 nx
      (nil)
      
  • set key value xx
    • 当 key 不存在时,放弃设置,返回空值
      127.0.0.1:6379> get age // age 这个键不存在
      (nil)
      127.0.0.1:6379> set age 18 xx
      (nil)
      
    • 当 key 存在时,可以设置。
      127.0.0.1:6379> set age 20
      OK
      127.0.0.1:6379> set age 18 xx
      OK
      127.0.0.1:6379> get age
      "18"
      

2.1.2 GETSET 命令的使用

GETSET 获取旧值并设置新值。

127.0.0.1:6379> get age
"18"
127.0.0.1:6379> GETSET age 25 // 将 age 设为 25,并且返回旧的值 18
"18"
127.0.0.1:6379> get age // 获取新的值
"25"

2.2 Hash 的使用

Redis Hash 是一个键值对集合,字符类型的 fieldvalue 组成的。

Hash 适合用来存储对象。

每个 Hash 可以存储 2 32 − 1 2^{32}-1 2321个键值对。

127.0.0.1:6379> HMSET student id 1 name "yunhu"
OK
127.0.0.1:6379> HGET student id
"1"
127.0.0.1:6379> HGET student name
"yunhu"

设置 Hash 名是 student,键为 id 的值是 1,键为 name 的值是 yunhu

然后去获取对应键的值。

2.3 List 的使用

Redis List 就是字符串列表。

127.0.0.1:6379> DEL student
(integer) 1
127.0.0.1:6379> lpush student "yunhu" // 将 yunhu 插入 student 列表头部
(integer) 1
127.0.0.1:6379> lpush student alice
(integer) 2
127.0.0.1:6379> lpush student bob
(integer) 3
127.0.0.1:6379> lrange student 0 -1 // 遍历 student 中的元素
1) "bob"
2) "alice"
3) "yunhu"

列表可以存储 个元素。

2.4 set 的使用

Redis Set 是一个无序的集合,底层使用哈希表实现,添加、删除、搜索都为 O ( 1 ) O(1) O(1)

127.0.0.1:6379> DEL student
(integer) 1
127.0.0.1:6379> sadd student alice
(integer) 1
127.0.0.1:6379> sadd student bob
(integer) 1
127.0.0.1:6379> sadd student xiaoming
(integer) 1
127.0.0.1:6379> sadd student bob // 添加两次 bob,但实际上只有一个。
(integer) 0
127.0.0.1:6379> smembers student // 返回集合中的所有的成员
1) "xiaoming"
2) "bob"
3) "alice"

2.5 zset 的使用

zset 与 set 一样都是集合,但是 zset 每个元素关联一个 double 类型的分数,通过这个分数对集合进行从小到大排序。分数可以重复。

127.0.0.1:6379> del student
(integer) 1
127.0.0.1:6379> zadd student 1 yunhu
(integer) 1
127.0.0.1:6379> zadd student 2 alice
(integer) 1
127.0.0.1:6379> zadd student 3 bob
(integer) 1
127.0.0.1:6379> zrangebyscore student 0 1000
1) "yunhu"
2) "alice"
3) "bob"
127.0.0.1:6379> zadd student 0 xiaoming
(integer) 1
127.0.0.1:6379> zrangebyscore student 0 1000
1) "xiaoming"
2) "yunhu"
3) "alice"
4) "bob"

相关阅读

手机版|MSIPO技术圈 皖ICP备19022944号-2

Copyright © 2023, msipo.com

返回顶部