我求ChatGPT带我玩Redis

2023-05-18 10:38:14 浏览数 (1)

前言

了不起最近发现,同事们都比较喜欢使用Redis来缓存数据,而且都是使用String来实现所有的缓存操作,对于其他数据结构使用的频率较少,所以今天了不起收集了一些常用的命令,让大家更熟悉Redis的操作。

Redis介绍

Redis是一个高性能的非关系型数据库,它支持多种数据结构,常见的有Strings、Lists、Sets、Hashes、Sorted sets五种数据结构,同时,Redis的所有操作命令都是原子性的。

Redis常用命令

Redis Strings

存储、检索字符串操作

代码语言:javascript复制
> SET name Alice
OK
> GET name
"Alice"

计数器

代码语言:javascript复制
> INCR age
(integer) 1
> INCRBY age 10
(integer) 11

使用场景

  • 缓存序列化后的对象信息,如存储JSON格式的对象
  • 计数器功能

Redis Lists

实现队列数据结构(先进先出)

代码语言:javascript复制
> LPUSH queue 1
(integer) 1
> LPUSH queue 2
(integer) 2
> RPOP queue
"1"
> RPOP queue
"2"

实现栈数据结构(先进后出)

代码语言:javascript复制
> LPUSH stack 1
(integer) 1
> LPUSH stack 2
(integer) 2
> LPOP stack
"2"
> LPOP stack
"1"

查询列表的长度

代码语言:javascript复制
> LLEN stack
(integer) 0

使用场景

  • 用于异步队列,将需延迟处理的数据塞到列表中,采用一个线程定时拿列表中的数据进行处理
  • 依赖于栈或者队列的场景

Redis Sets

Redis Set集合是一个无序且唯一的字符串集合

存储字符串集合

代码语言:javascript复制
> SADD user:1 100
(integer) 1
> SADD user:1 101
(integer) 1
> SADD user:1 102
(integer) 1
> SADD user:2 100
(integer) 1

检索集合是否包含某个字符串

代码语言:javascript复制
> SISMEMBER user:1 100
(integer) 1
> SISMEMBER user:1 200
(integer) 0

检索两个集合的公共元素

代码语言:javascript复制
> SINTER user:1 user:2
1) "100"

检索列表的长度

代码语言:javascript复制
> SCARD user:1
(integer) 3

使用场景

  • 去重
  • 集合运算,例如交集、并集、差集

Redis Hashes

哈希表可以用于存储Key-Value形式的数据

存储一个User对象

代码语言:javascript复制
> HSET user name Alice age 20 sex male
(integer) 3
> HGET user name
"Alice"
> HGETALL user
1) "name"
2) "Alice"
3) "age"
4) "20"
5) "sex"
6) "male"

获取哈希表中所有的Key

代码语言:javascript复制
> HKEYS user
1) "name"
3) "age"
5) "sex"

获取哈希表中所有的值

代码语言:javascript复制
> HVALS user
2) "Alice"
4) "20"
6) "male"

使用场景

  • 对象存储

Redis Sorted sets

有序集合不允许有重复的元素,是String类型的集合

构造一个排行榜

代码语言:javascript复制
> ZADD code 1 php
(integer) 1
> ZADD code 2 go
(integer) 1
> ZADD code 3 java
(integer) 1
> ZADD code 4 go
(integer) 0
> ZRANGE code 0 10 WITHSCORES
1) "php"
2) "1"
3) "java"
4) "3"
5) "go"
6) "4"

使用场景

  • 排行榜功能

总结

以上是Redis常用的五种命令介绍,各位可以根据不同的使用场景,选择合适的数据结构玩转Redis!

0 人点赞