前言
了不起最近发现,同事们都比较喜欢使用Redis来缓存数据,而且都是使用String来实现所有的缓存操作,对于其他数据结构使用的频率较少,所以今天了不起收集了一些常用的命令,让大家更熟悉Redis的操作。
Redis介绍
Redis是一个高性能的非关系型数据库,它支持多种数据结构,常见的有Strings、Lists、Sets、Hashes、Sorted sets五种数据结构,同时,Redis的所有操作命令都是原子性的。
Redis常用命令
Redis Strings
存储、检索字符串操作
> SET name Alice OK > GET name "Alice"
计数器
> INCR age (integer) 1 > INCRBY age 10 (integer) 11
使用场景
- 缓存序列化后的对象信息,如存储JSON格式的对象
- 计数器功能
Redis Lists
实现队列数据结构(先进先出)
> LPUSH queue 1 (integer) 1 > LPUSH queue 2 (integer) 2 > RPOP queue "1" > RPOP queue "2"
实现栈数据结构(先进后出)
> LPUSH stack 1 (integer) 1 > LPUSH stack 2 (integer) 2 > LPOP stack "2" > LPOP stack "1"
查询列表的长度
> LLEN stack (integer) 0
使用场景
- 用于异步队列,将需延迟处理的数据塞到列表中,采用一个线程定时拿列表中的数据进行处理
- 依赖于栈或者队列的场景
Redis Sets
Redis Set集合是一个无序且唯一的字符串集合
存储字符串集合
> SADD user:1 100 (integer) 1 > SADD user:1 101 (integer) 1 > SADD user:1 102 (integer) 1 > SADD user:2 100 (integer) 1
检索集合是否包含某个字符串
> SISMEMBER user:1 100 (integer) 1 > SISMEMBER user:1 200 (integer) 0
检索两个集合的公共元素
> SINTER user:1 user:2 1) "100"
检索列表的长度
> SCARD user:1 (integer) 3
使用场景
- 去重
- 集合运算,例如交集、并集、差集
Redis Hashes
哈希表可以用于存储Key-Value形式的数据
存储一个User对象
> 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
> HKEYS user 1) "name" 3) "age" 5) "sex"
获取哈希表中所有的值
> HVALS user 2) "Alice" 4) "20" 6) "male"
使用场景
- 对象存储
Redis Sorted sets
有序集合不允许有重复的元素,是String类型的集合
构造一个排行榜
> 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!