本文参考以下文章:
Redis实战
Redis 命令参考
常用数据结构
Redis支持5种数据结构,分别是STRING(字符串)、LIST(列表)、HASH(散列)、SET(集合)、ZSET(有序集合)。Redis的一部分指令对这5中数据类型是通用的,如DEL、TYPE等;但也有一部分Redis指令只对特定的一种或者两种结构支持。
STRING(字符串)数据结构
STRING结构示意图:
常用指令:
| 命令 | 用例和描述 |
|---|---|
| GET | GET key 获取key所关联的字符串值 |
| SET | SET key value 设置key和value的关联关系 |
| DEL | DEL key 删除对应key |
| INCR | INCR key-name 将键存储的值加上1 |
| DECR | DECR key-name 将键存储的值减去1 |
| INCRBY | INCRBY key-name amount 将键存储的值加上整数amount |
| DECRBY | DECRBY key-name amount 将键存储的值减去整数amount |
| INCRBYFLOAT | INCRBYFLOAT key-name amount 将键存储的值加上浮点数amount,这个命令在Redis2.6+可用 |
LIST(列表)数据结构
注意事项:列表里面的元素是可以重复的
常用指令:
| 命令 | 用例和描述 |
|---|---|
| LPUSH | LPUSH key-name value1 将给定值推入到列表的左端 |
| RPUSH | RPUSH key-name value1 将给定值推入到列表的右端 |
| LPOP | LPOP key-name 将列表左端的一个值弹出,并返回被弹出的值 |
| RPOP | RPOP key-name 将列表右端的一个值弹出,并返回被弹出的值 |
| LRANGE | LRANGE key-name start end 返回列表从start偏移量到end偏移量范围内的所有元素,包括start和end。start 和 end 偏移量都是基于0的下标,即list的第一个元素下标是0(list的表头),第二个元素下标是1,以此类推。偏移量也可以是负数,表示偏移量是从list尾部开始计数。 例如, -1 表示列表的最后一个元素,-2 是倒数第二个,以此类推。 |
| LINDEX | LINDEX key-name offset 返回列表中偏移量为offset的值 |
| LTRIM | LTRIM key-name start end 对列表进行修剪,只保留start偏移量到end偏移量范围内的元素,包括start和end |
HASH(哈希)数据结构
Redis的哈希可以让用户将多个键值对存储到一个Redis键中。和字符串一样,哈希存储的值既可以是字符串也可以是数字值,可以对数字值进行自增或者自减操作。可以把这种数据聚集看成是关系数据库中的行。
常用指令:
| 命令 | 用例和描述 |
|---|---|
| HSET | HSET key-name field value 将哈希键key中field的值设为value |
| HMSET | HMSET key-name field value [field value …] 同时将多个 field-value (域-值)对设置到哈希表 key 中。 |
| HGET | HSET key-name field 获取哈希键key中field的值 |
| HMGET | HMGET key-name field [field …] 从哈希里面获取一个或者field的值 |
| HGETALL | HGETALL key-name 获取哈希键key中所有键值对 |
| HDEL | HGETALL key-name field 删除哈希键key中field对应的键值对 |
| HLEN | HLEN key-name 返回哈希包括的键值对数量 |
| HEXISTS | HEXISTS key-name field 检测给定field是否存在哈希中 |
SET(集合)数据结构
Redis的集合和列表都可以存储多个字符串,它们之间的不同在于,列表可以存储多个相同的字符串,而集合不可以。另外集合是无序的,而列表是有序的。
常用指令:
| 命令 | 用例和描述 |
|---|---|
| SADD | SADD key-name value1 [value2….] 将一个或者多个元素加入到集合key-name中,已经存储在集合中元素会被忽略,返回添加成功的元素数量 |
| SMEMBERS | SMEMBERS key-name 获取集合key-name中的所有元素 |
| SREM | SREM key-name value1 [value2….] 尝试删除集合key-name中的一个或者多个元素,如果元素存在集合中,则被删除,否则会被忽略 |
| SCARD | SCARD key-name 获取集合中的元素个数 |
ZSET(有序集合)数据结构
有序集合和哈希一样,都用于存储键值对:其中有序集合的每个键称为成员,都是独一无二的,而有序集合的每个值成为分值,都必须是浮点数。有序集合是Redis中唯一既可以根据成员访问元素,又可以根据分值以及分支的排列顺序来访问元素的结构。
常用命令:
| 命令 | 用例 | 描述 |
|---|---|---|
| ZADD | ZADD key-name score member [score member] | 将一个带有分值的成员添加到有序集合中 |
| ZRANGE | ZRANGE zset-key start stop | 返回有序集合中,指定区间内的成员 |
| ZRANGEBYSCORE | ZRANGEBYSCORE zset-key min max | 返回有序集合中,所有score值介于min和max之间(包括main和max)的成员 |
| ZREM | ZREM zset-key member [member] | 从有序集合中移出给定的成员,并返回被移除成员的数量 |
| ZCARD | ZCARD zset-key | 返回有序集合中包含的成员数量 |