Redis中五大数据类型和常用命令
本系列更多文章,可以查看专栏 Redis
一、简介
Redis主要包括五种数据类型:String、Hash、List、Set和Sorted Set即Zset。
二、数据类型
以下数据类型是针对value的
1.String类型
- String字符串的值可以是:字符串、数字、二进制,但其值最大不能超过512M。
- 内容数据存储结构:key-value
(1)常见命令
命令格式 | 功能 | 示例 | 说明 |
---|
set key value | 将key-value加入缓存redis | set name yf | 可多次为同一个key赋予相同的value;若key已存在,会覆盖原本的value |
get key | 从redis缓存中读取key的value值 | get name | |
incr key | 将key对应的value值+1 | incr age | 仅对value是数值的key生效 |
decr key | 将key对应的value值-1 | decr age | 仅对value是数值的key生效 |
setex key seconds value | 将key-value加入缓存redis,并设置seconds秒后value失效 | setex mcode 60 123446 | 可用于短信验证码等 |
ttl key | 查看key的存活时间 | ttl mcode | 若为永久存活的key,返回-1;若设置了过期时间的key被删除或者已过期,返回-2,否则返回相应的秒数 |
del key | 从redis缓存中删除keyu | del mcode | 删除 |
setnx key value | 将key-value加入缓存redis | setex name ye | 若key已存在,则不覆盖其value;若key不存在,则向redis缓存中添加key-value |
(2)非常见命令

2.Hash类型
- Hash类型是String类型的field和value的映射表,或者说是String集合;
- 适合存储对象,对象存储在Hash中比存储在String类型中占用更少的内存空间;
- 内容数据存储结构:key-value,value为field-value形式。
(1)常见命令
命令格式 | 功能 | 示例 | 说明 |
---|
hset key field value | 将field value存入redis中的hash中,键值为key | hset user name yf | |
hget key field | 从key中对应的hash列表,读取相应的field字段 | 不可仅使用hget key,必须指定field | |
hmset key field1 value1 [field2 value2…] | 将多个field value存入redis中的hash中 | hset user name yf age 23 | |
hget key field1 [field2…] | 从key中对应的hash列表,读取多个field字段 | 不可仅使用hget key,必须指定一个及以上field | |
hexists key field | 判断key对应的hash列表中是否存在对应的field字段 | hexists user name | |
hdel key field | 删除key对应的hash列表中的field字段 | hdel key name | |
hincrby key field increment | 给key对应的hash列表中的field字段+increment | hincrby user mcode 60 | |
hlen key | 查看key对应的hash列表中field字段的数量 | hlen user | |
hkeys key | 获取key对应的hash列表中所有field字段名 | hkeys user | |
hvals key | 获取key对应的hash列表中所有fielld字段的value值 | hvalues user | 仅有value值,无对应的field字段名 |
hgetall key | 获取key对应的hash列表中所有fielld字段及其对应的value值 | hgetall user | 既有字段名,还有相应的value值 |
3.List类型
- List类型是一种双端链表结构,既可以作为栈,也可以作为队列。
- 可以存放重复的元素,常对元素使用pop、push等操作
- 应用场景:用户收藏文章列表等等
(1)常见命令
命令格式 | 功能 | 示例 | 说明 |
---|
rpush key value[…] | 从末尾处,向key集合中添加value值 | rpush hobby swim eating | 一次性添加多个value时,后添加的出现在右边 |
lpush key value[…] | 从开头处,向key集合中添加value值 | lpush hobby sleep running | 一次性添加多个value时,后添加的出现在左边 |
lrange key start stop | 从起始位置到终止位置展示value值 | lrange hobby 0 2 | stop值可以选择-1,-2等等,表示倒数第一个value、倒数第二个value。上两行示例后,结果为 running sleep swim eating |
rpop key | 弹出key集合中末尾(最右边)的元素 | rpop hobby | |
lpop key | 弹出key集合中开头(最左边)的元素 | lpop hobby | |
llen key | 获取list类型集合长度 | llen hobby | |
(2)非常见命令

4.Set类型
- Set集合是String类型的无序集合,通过HashTable实现;
- 对集合可以取交集、并集、差集;
- 内容数据存储结构:key-value,value为set类型
(1)常见命令
命令格式 | 功能 | 示例 | 说明 |
---|
sadd key members […] | 向key集合中添加members | sadd myset a b c | |
smembers key | 遍历key集合中所有members元素 | smembers myset | |
srem key members […] | 删除key集合中members | srem myset a | |
spop key count | 从key集合中随机弹出count个元素 | spop myset 1 | 可应用于抽奖 |
(2)非常见命令

5.Sorted Set类型
- 又称Zset类型
- Sorted Set集合是通过哈希表实现的,添加、删除、查找的复杂度均为O(1);
- Sorted Set集合是有排序效果的Set集合,每个元素关联一个double类型的分数,根据此分数实时地进行排序;
- 内容数据存储结构:key-value,value为set类型
(1)常见命令
命令格式 | 功能 | 示例 | 说明 |
---|
zadd key score members[…] | 往key集合中添加member元素,分数为score | zadd players 1000 a 2000b | 可以同时添加多个member元素 |
zincrby key increment member | 将key集合中的member元素分数+increment | zincrby players 3000 a | 增加的分数在前,member元素在后 |
zrange key start stop[withscores] | 将key集合中的member元素按分数升序排列[同时显示分数] | hrange players 0 -1 withscores | -1即为倒数第一个member元素的位置 |
zrevrange key start stop[withscores] | 将key集合中的member元素按分数降序排列[同时显示分数] | hrevrange players 0 -1 withscores | -1即为倒数第一个member元素的位置 |
zrank key member | 返回member元素在key集合中的正序排名 | zrank players b | |
zrevrank key member | 返回member元素在key集合中的倒序排名 | zrevrank players b | |
zcard key | 获取key集合中member元素的个数 | zcard players | |
(2)非常见命令

结尾
如有错误,欢迎评论区指正。