Redis的五大数据类型
Redis支持的五大数据类型包括String、List、Set、Zset、和Hash。
1.String类型命令操作
String类型是Redis数据库最基本的数据类型,在一个Redis中,字符串value最多可以是512M。
命令 |
备注 |
get <key> |
获取对应键的值 |
set <key> <value> |
设置键值对 |
append <key> <value> |
将给定的value值追加到原值的末尾 |
strlen <key> |
获取对应键的值的长度 |
setnx <key> <value> |
只有在Key不存在时设置Key的值 |
incr <key> |
将Key的值加1,只能对数字值进行操作,如果初始值为空,新增值为1 |
decr <key> |
将Key的值减1,只能对数字值进行操作,如果初始值为空,新增值为-1 |
incrby <key> <值> |
将Key的值以自定义的值增加 |
decrby <key> <值> |
将Key的值以自定义的值减少 |
mset <k1> <v1> <k2> <v2> ... |
设置一个或多个键值对 |
mget <k1> <k2> <k3> ... |
获取一个或多个键的值 |
msetnx <k1> <v1> <k2> <v2> ... |
所有的键Key不存在时,设置一个或多个键值对 |
getrange <key> <begin> <end> |
获取值的范围 |
setrange <key> <begin> <value> |
从起始位置开始,使用value覆写键Key中的字符串值 |
setex <key> <second> <value> |
设置键值的同时设置过期时间 |
getset <key> <value> |
设置新值的同时获得旧值 |
2.List类型命令操作
Redis中的List列表是简单的字符串列表,按照插入顺序进行排序,可以添加一个元素到头部或者尾部。List列表的底层实际上是个双向列表,对两端的操作性能要求很高,通过索引下标操作中间的节点性能会较差。
命令 |
备注 |
lpush/rpush <k1> <v1> <k2> <v2> ... |
从左边/右边插入一个或多个值 |
lpop/rpop <key> |
从左边/右边吐出一个值 |
rpoplpush <key1> <key2> |
从<key1>列表右边吐出一个值,插到<key2>列表左边 |
lrange <key> <start> <stop> |
按照索引下标范围获得元素(从左到右) |
lindex <key> <index> |
按照索引下标获得元素(从左到右) |
llen <key> |
获得列表长度 |
linsert <key> before|after <value> <newvalue> |
在<value>的前面或后面插入<newvalue> |
lrem <key> <n> <value> |
从左边删除n个value |
3.Set类型命令操作
Redis中的Set类型同List类型类似,特殊之处在于Set是可以自动排重的,当需要存储一个列表数据又不希望出现重复数据时,Set是一个很好的选择。它的底层其实是一个value为null的Hash表,对于添加、删除以及查找的操作比较方便。
命令 |
备注 |
sadd <key> <v1> <v2> ... |
将一个或多个元素加入到集合Key中,已经存在于集合的元素将被忽略 |
smembers <key> |
取出该集合的所有值 |
sismember <key> <value> |
判断集合key是否含有该值,有则返回1,没有则返回0 |
scard <key> |
返回该集合的元素个数 |
srem <key> <v1> <v2> ... |
删除集合中的某个元素 |
spop <key> |
随机从该集合中吐出一个值 |
srandmember <key> <n> |
随机从该集合中取出n个值,取出的值不会被删除 |
sinter <key1> <key2> |
返回两个集合的交集元素 |
sunion <key1> <key2> |
返回两个集合的并集元素 |
sdiff <key1> <key2> |
返回两个集合的差集元素 |
4.Hash类型命令操作
Redis中的Hash类型的数据是一个String类型的filed和value的映射表,其特别适合用于存储对象,类似于Java里面的Map<String, Object>集合。
命令 |
备注 |
hset <key> <field> <value> |
给集合中的field键赋值value |
hget <key1> <field> |
获取集合中field键对应的值 |
hmset <k1> <f1> <v1> <f2> <v2> ... |
批量设置集合中的键值对 |
hexists key <field> |
判断哈希表中给定field键是否存在 |
hkeys <key> |
列出该集合的所有field |
hvals <key> |
列出该集合的所有value |
hincrby <key> <field> <increment> |
为哈希表中的field键对应的值加上increment值 |
hsetnx <key> <field> <value> |
当前仅当field键不存在时,将哈希表中的field键对应的值设置为value |
5.Zset类型命令操作
Redis中的有序集合Zset与集合Set非常相似,它们都是一个没有重复元素的字符串集合。不同之处在于有序集合的所有成员都关联了一个评分(score),这个评分被用来按照从从最低分到最高分的方式给集合中的成员排序。集合的成员是唯一的,但是评分可以是重复的。
因为元素是有序的,所以可以很快地根据评分来获取一个范围中的元素。访问有序集合的中间元素效率也很高,因此开发者能够使用有序集合作为一个没有重复成员的智能列表。
命令 |
备注 |
zadd <key> <s1> <v1> <s2> <v2> ... |
将一个或多个元素及其评分值加入到有序集合中 |
zrange <key> <start> <stop> [withscore] |
返回有序集合中下标在start和stop之间的元素,带withscores,可以让分数和值一起返回到结果集 |
zrangebyscore key min max [withscores] [limit offset count] |
返回有序集合中score值介于min和max之间的所有成员。有序集合成员按score值递增的次序排列 |
zrevrangebyscore key min max [withscores] [limit offset count] |
返回有序集合中score值介于min和max之间的所有成员。有序集合成员按score值递减的次序排列 |
zincrby <key> <increment> <value> |
为有序集合中的元素的score值加上指定数值 |
zrem <key> <value> |
删除有序集合下的指定值 |
zcount <key> <min> <max> |
统计有序集合分数区间内的元素个数 |
zrank <key> <value> |
返回该值在集合中的排名,从0开始 |