前言
了不起最近发现,同事们都比较喜欢使用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!