一、Redis通用命令
通用命令是指部分数据类型的,都可以使用的指令,常见的有:
-
KEYS: 查看符合模板的所有key,不建议在生产环境上使用
KEYS * // *匹配任意字符 KEYS a?? // ?匹配一个字符 a?? 可以匹配出 age这种 -
DEL: 删除一个指定的key
DEL name // 删除掉 name 这个key -
EXISTS: 判断 key 是否存在
EXISTS name // 存在 name 这个 key 就返回 1,否则就返回 0 -
EXPIRE:给一个key设置有效期,有效期到期时该key就会被自动删除
EXPIRE name 2 // 给 name 设置2秒的过期时间 -
TTL:查看一个key的剩余有效期
TTL name // 查看 name 的有效期, 返回 -1 代表永久存在,-2代表已过期
二、String类型常用命令
String 类型,也就是字符串类型,是Redis中最简单的存储类型
其value是字符串,不过根据字符串的格式不同,又可以分为3类:
- string:普通字符串
- int:整型类型,可以做自增,自减操作
- float:浮点类型,可以做自增,自减操作
不管是哪种格式,底层都是字节数组形式存储,只不过是编码方式不同。字符串类型的最大空间512m
常见命令有:
-
SET:添加或者修改一个已经存在的一个String类型的键值对
SET name zhangsan
-
GET:根据key获取出String类型的value
GET name
-
MSET:批量添加多个String类型的键值对
MSET name zhangsan age 22 score 88.5
-
MGET:根据多个key获取多个String类型的value
MGET name age
-
INCR:让一个整型的key自增1
INCR age
-
INCRBY:让一个整型的key自增并指定步长,例如INCRBY num 2 让num值自增2
INCRBY age 2
-
INCRBYFLOAT:让一个浮点类型的数字自增并指定步长
INCRBYFLOAT score 3
-
SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行
SETNX name bob // 不存在 name 就添加,存在就不会添加
-
SETEX:添加一个String类型的键值对,并且指定有效期
SETEX school 5 cqie // school 是 key, 5 是过期时间, cqie 是value
三、Hash类型常用命令
Hash常见的命令有:
-
HSET key field value:添加或者修改hash类型key的field的值
HSET stus name zhangsan -
HGET key field:获取一个hash类型key的field的值
HGET stus name -
HMSET:批量添加多个hash类型key的field的值
HMSET stus name zhangsan age 22 score 88.5 -
HMGET:批量获取多个hash类型key的field的值
HMGET stus age -
HGETALL:获取一个hash类型的key中的所有的field和value
HGETALL stus -
HKEYS:获取一个hash类型的key中的所有的field
HKEYS stus -
HVALS:获取一个hash类型的key中的所有的value
HVALS stus -
HINCBY:让一个hash类型key的字段值自增并指定步长
HINCBY stus age 2 -
HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行
HSETNX stus nage zhangsan
四、List类型常用命令
Redis中的List类型与Java中的LinkedList类似,可以看做一个双向链表结构。既可以支持正向检索和也可以支持反向检索。
特征也与LinkedList类似:
- 有序
- 元素可以重复
- 插入和删除快
- 查询速度一般
常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等。
List常见的命令有:
-
LPUSH key element: 向列表里面插入一个或者多个元素
LPUSH scores 60 90 80 -
LPOP key:移除并返回列表左侧的第一个元素,没有则返回nil
LPOP scores 3 -
RPUSH key element:向列表右侧插入一个或者多个元素
RPUSH scores 90 50 20 -
RPOP key:移除并返回列表右侧的第一个元素
RPOP scores 3 -
LRANGE key start end:返回一段角标范围内的所有元素
LRANGE scores 0 2 -
BLPOP和BRPOP:与LPOP和RPOP类似,只不过在没有元素时等待指定时间,而不是直接返回nil
BLPOP scores 3
五、Set类型常用命令
Redis的Set结构与Java中的HashSet类似,可以看做是一个value为null的HashMap。因为也是一个hash表,因此具备与HashSet类似的特征。
- 无序
- 元素不重复
- 查找快
- 支持交集、并集、差集等功能
Set类型的常见命令有:
-
SADD key number:向set中添加一个或多个元素
SADD demo x y z -
SREM key number:移除set中的指定元素
SREM demo x -
SCARD key:返回set中元素的个数
SCARD demo -
SISMEMBER key number:判断一个元素是否存在于set中
SISMEMBER demo h -
SMEMBERS:获取set中的所有元素
SMEMBERS demo -
SINTER key1 key2:求key1与key2的交集
-
SDIFF key1 key2:求key1与key2的差集
-
SUNION key1 key2:求key1与key2的并集
六、SortedSet类型常用命令
Redis的SortedSet是一个可排序的set集合,与Java中的TreeSet类似,但是底层数据结构有很大的差异。SortedSet中的每一个元素都带一个score属性,可以基于score属性对元素进行一个排序,底层的实现是一个跳表(SkipList)加hash表。
SortedSet具备下列特性:
- 可排序
- 元素不重复
- 查询速度快
因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能。
SortedSet的常见命令有:
-
ZADD key score number:添加一个或多个元素到sorted set ,如果已经存在则更新其score值
ZADD students 80 zhangsan 90 lisi 85 xiaohon -
ZREM key number:删除sorted set中的一个指定元素
ZREM students zhangsan -
ZSCORE key number:获取sorted set中的指定元素的score值
ZSCORE student xiaohon -
ZRANK key number:获取sorted set 中的指定元素的排名
ZRANK students xiaohon -
ZCARD key:获取sorted set中的元素个数
ZCARD students -
ZCOUNT key min max:统计score值在给定范围内的所有元素的个数
ZCOUNT students 80 100 -
ZINCRBY key increment member:让sorted set中的指定元素自增,步长为指定的increment值
ZINCRBY students 5 xiaohon -
ZRANGE key min max:按照score排序后,获取指定排名范围内的元素
ZRANGE students 80 100 -
ZRANGEBYSCORE key min max:按照score排序后,获取指定score范围内的元素
ZRANGEBYSCORE students 0 80 -
ZDIFF、ZINTER、ZUNION:求差集、交集、并集
-
注意:所有的排名默认都是升序,如果要降序则在命令Z后面添加REV即可