Redis中五大基本数据类型为String,List,Set,Hash和Zset(有序集合)。其中String类型是最为基础的,list可以用来做队列/栈,set保证集合内元素不重复,hash是的value部分也是若干个k-v的形式(一般用于存储对象),Zset与set的不同是维护了一个score,可以根据score进行排序。
下面是一些常用的API:(Redis的命令无大小写之分,为了区分命令关键字与key value,下面的命令都用大写符号表示):
String
最常用的一种数据类型,String类型的值可以是字符串、数字或者二进制,但值最大不能超过512MB。
命令 | 描述 |
---|---|
SET key value | 添加一个字符串key,其值为value |
GET key | 得到指定key的字符串的值 |
APPEND key value | 向指定的key的value后追加字符串 |
DECR/INCR key | 将指定key的value数值进行-1/+1(仅对于数字) |
DECRBY/INCRBY key n | 将指定key的value数值进行-n/+n(仅对于数字) |
STRLEN key | 获取key对应的字符串长度 |
GETRANGE key start end | 按起止位置获取字符串(闭区间) |
SETRANGE key offset value | 用指定的value替换掉key中offset开始的值 |
GETSET key value | 将指定的key的值设置成value,同时返回原来的值 |
SETNX key value | 仅当key不存在的时候进行set |
SETEX key second value | 设置键值对并设置过期时间 |
MSET key1 value1 [key2 value2…] | 批量设置键值对 |
MSETNX key1 value1 [key2 value2…] | 批量设置键值对,仅当所有key都不存在的时候执行 |
MGET key1 [key2…] | 批量获得多个key保存的值 |
可见String类型可以做计数器,统计一些多单位的数量。
List
有序可重复的集合,底层是依赖双向链表实现的。
命令 | 描述 |
---|---|
LPUSH/RPUSH key value1[value2…] | 从左边/右边向列表中PUSH值(一个或多个) |
LRANGE key start end | 获取list起止元素(end==-1表示到最后) |
LINSERT key BEFORE|AFTER pivot value | 在指定的元素pivot前/后 插入value |
LLEN key | 查询列表的长度 |
LINDEX key index | 通过索引获取列表元素 |
LSET key index value | 通过索引为元素设置值 |
LPOP/RPOP key | 从最左边/最右边移除值 并返回 |
LPOPPUSH source destination | 从列表尾部(右)弹出元素,并添加到另一个列表头部 |
LTRIM key start end | 通过下标截取指定范围内的列表 |
LREM key count value | List是允许重复的 count>0:从头部开始搜索 删除指定的value 至多count个; count<0: 从尾部进行搜索… count=0: 删除列表中所有的指定value。 |
可见List类型由于属于双端队列的原因,可以用作消息队列。
Set
无序去重的集合。Set 提供了交集、并集等方法,对于实现共同好友、共同关注等功能特别方便。
命令 | 描述 |
---|---|
SADD key member1[member2…] | 向集合中无序增加一个/多个元素 |
SCARD key | 获得集合中的成员数 |
SMEMBERS key | 返回集合中所有的成员 |
SISMEMBER key member | 查询menber元素是否是集合的成员,结果是无序的 |
SRANDMEMBER key [count] | 随机返回count个成员,缺省值为1 |
SPOP key [count] | 随机移除并返回集合中count个成员,count缺省值为1 |
SMOVE source destination member | 将source集合中的member移动到destination集合中 |
SREM key member1[member2…] | 移除集合中一个/多个成员 |
SDIFF key1 [key2…] | 返回所有集合的差集 key1-key2-… |
SINTER key1 [key2…] | 返回所有集合的交集 |
SUNION key1 [key2…] | 返回所有集合的并集 |
Set的用处也有很多,比如可以把用户的关注/粉丝存储在不同set中,不同用户取交集就能够得到共同好友。。。
Hash
Hash 是一个键值对集合。
命令 | 描述 |
---|---|
HSET key field value | 将哈希表key 中的字段field 设置为value |
HMSET key field1 value1 [field2 value2…] | 同时设置多个field-value键值对到哈希表key中 |
HSETNX key field value | 只有在字段field不存在时,设置哈希表字段的值 |
HEXISTS key field | 查看哈希表key中是否存在指定的field |
HGET key field | 获取存储在哈希表中指定字段的值 |
HMGET key field1 [field2…] | 获取所有给定字段的值 |
HGETALL key | 获取在哈希表key中所有字段的值 |
HKEYS key | 获取哈希表key中所有的字段 |
HLEN key | 获取哈希表中字段的数量 |
HVALS key | 获取哈希表key中所有值 |
HDEK key field1 [field2…] | 删除哈希表key中一个/多个field字段 |
HINCRBY key field n | 为哈希表key中指定的字段的整数值加上n,并返回增量后的结果(只适用于整数型字段) |
可见Hash更适合于对象的存储。
Zset
有序Set。内部维护了一个score的参数来实现。适用于排行榜和带权重的消息队列等场景。
命令 | 描述 |
---|---|
ZADD key score1 member1 [score2 member2] | 向有序集合中添加一个或多个成员,或者更新已存在成员的分数 |
ZCARD key | 获取有序集合的成员数 |
ZCOUNT key min max | 计算在有序集合中指定区间score的成员数 |
ZINCRBY key n member | 有序集合中指定成员的分数增加n |
ZSCORE key member | 返回有序集合中,成员的分数值 |
ZRANGE key start end | 通过索引区间返回有序集合中指定区间的成员 |
ZRANGEBYSCORE key min max | 通过分数返回有序集合指定区间的成员,-inf和+inf表示最大值和最小值 |
ZREM key member1 [member2…] | 移除有序集合中一个/多个成员 |
ZREMRANGEBYSCORE key min max | 移除有序集合中给定的分数区间的所有成员 |
ZREVRANGEBYSCORE key max min | 返回有序集合指定分数区间内的成员,按照倒序排列 |
可见Zset适用于各种需要排序的场景,如热搜排行榜一类的。
最后放一个很棒的Redis五大基本数据类型的博客:链接