一、redis常用命令
- keys *
查看当前所有的键 - exists < key >
判断某个键是否存在 - type < key >
查看键的类型 - del < key >
删除一个键 - expire < key > < seconds >
为一个键设置过期时间,单位秒 - ttl < key>
查看某个键还有多长时间过期,-1表示永不过期,-2表示过期 - dbsize
查看当前库中有多少条信息 - flushdb
清空当前库 - flushall
清空全部库
二、redis的五大数据类型
-
String数据类型
String是redis中最基础的数据类型,是二进制安全的,可以包含任何数据,redis中一个String类型的value大小最多可以是512M操作字符串的指令:
get < key >
查询对应键值set < key > < value >
添加键值对append < key > < value >
将给定的value添加到原值得末尾strlen < key >
获取值的长度setnx < key > < value >
只有key不存在时添加键值对incr < key >
将key中存储的数字值增1(只对数字值操作),如果为空,则设置为1decr < key >
将key中存储的数字值减1(只对数字值操作),如果为空,则设置为-1incrby / decrby < key > < 步长 >
将key中的值自增减,自定义步长(就是一次加减多少)mset < key1 > < value1 > < key2 > < value2 > …
一次添加多个键值对mget < key1 > < key2 > …
一次获取多个键的值msetnx < key1 > < value1 > < key2 > < value2 > …
一次添加若干个不存在的键值对,只有所有键值对不存在的时候添加getrange < key > < 起始位置 > < 结束位置 >
获取key值得字串,起始位置和结束位置都包含setrange < key > < 起始位置 > < value >
替换key值中得字串,从起始位置开始setex < key > < seconds > < value >
添加键值对得同时设置过期时间getset < key > < value >
以新换旧,设置新值得同时获取旧值 -
List数据类型
单键多值,就是简单得字符串列表,底层是一个双向链表对列表得操作命令:
lpush / rpush < key > < value1 > < value2 > …
从左边/右边添加若干个值lpop / rpop < key >
从左边/右边取出一个值,当所有得值被取完,则这个键也将消亡rpoplpush < key1 > < key2 >
从key1得右边取出一个值,添加到key2列表得左边lrange < key > < start > < stop >
按照下表获取若干元素(从左到右)lindex < key > < index >
按照下表获取元素(从左到右)llen < key >
获取列表得长度linsert < key > before | after < value > < newvalue >
在指定得元素前或者后面添加一个元素lrem < key > < n > < value >
从左边删除n个value ,n为0得时候,删除所有得value -
set数据类型
redis中得set对外提供的功能与List类似是一个列表得功能,特殊之处set可以排重,set是一个无序的集合,底层是一个value值为null的hash表,所有添加,删除,查找的复杂度都是o(1)对set的操作命令:
sadd < key > < value1 > < value2 > …
将一个或多个元素添加到key集合中,如果集合中存在要添加的元素,则忽略该元素smembers < key >
取出集合的所有值sismember < key > < value >
判断集合key中是否存在value,如果不存在返回0,有则返回1scard < key >
返回key集合中元素的个数srem < key > < value1 > < value2 > …
删除集合中某些元素spop < key >
随机从key集合中取出一个元素srandmembers < key > < n >
随机从集合中取出n个元素,而且不会从集合中删除这些元素sinter < key1 > < key2 >
返回两个集合的交集元素sunion < key1 > < key2 >
返回两个元素的并集元素sdiff < key1 > < key2 >
返回两个集合的差集元素 -
hash数据类型
redis中hash是一个键值对集合,适合用于存储对象,类似于Java中的map对hash的操作命令:
hset < key > < field > < value >
给key集合中添加 一个键值对hget < key > < field >
从key集合中取出键为field的值hmset < key > < field1 > < value1 > < field2 > < value2 > …
向key集合中添加多个键值对hexists < key > < field >
查看名为key的hash表中是否存在fieldhkeys < key >
查看名为key的hash表中所有fieldhvals < key >
查看名为key的hash表中所有valuehgetall < key >
查看所有的键值hincrby < key > < field > < increment >
为名为key的hash表中field的值加上增量incrementhsetnx < key > < filed > < value >
如果名为key的hash表中不存在field,则向其中添加该键值对 -
zset数据类型
redis中有序集合zset与普通集合set非常相似,只是zset中的每一个元素比set的中的每一个元素多一个评分,zset就是按照这个评分来实现排序的,而且评分可以重复,因此可以从zset集合中按照评分范围和次序来查找元素。对zset的操作命令:
zadd < key > < score1 > < value1 > < score2 > < value2 > …
向名为key的zset集合中添加若干个评分为score的valuezrange < key > < start > < stop > [withscore]
返回名为key的zset集合中start到stop的元素,如果带上withscore就会连评分一起返回zrangebyscore < key > min max [withscore] [limit offset count]
返回zset集合中min到max(包含min,max)之间的元素zrevrangebyscore < key > max min [withscore] [limit offset count]
这是zrangebyscore的逆序形式zincrby < key > < increment > < value >
为元素的评分加上增量incrementzrem < key > < value >
删除指定的valuezcount < key > < min > < max >
统计集合中分数区间元素的个数zrank < key > < value >
返回value在集合中的排名,从零开始