通用指令
keys *
用于查询当前数据库的键(key)
exists <key>
判断某个键(key)是否存在,返回1(存在)或0(不存在)
type <key>
查看某个键(key)所对应的值的类型
del <key>
删除某个键,返回1(成功)或0(失败)
expire <key> <seconds>
为某个键设置过期时间,单位为秒
setex <key> <过期时间> <value>
与 expire
不同的是这是在创建键值对的时候就给它设置一个过期时间
ttl <key>
查看某个键剩余的时间或状态,返回-1表示永不过期
,-2表示已过期
,其他表示剩余时间
dbsize
查看当前数据库的key的数量
Flushdb
清空当前数据库
Flushall
清空所有数据库
Multi,Exec,discard
WATCH <key1> <key2> ....
在执行multi
之前先执行该命令的haul可以监视一个或多个key,如果事务在执行时,这个或这几个key的值呗其他命令所改动,那么事务将被打断,返回nill(类似于null)
适合于String类型
set <key> <value>
添加一个键值对
get <key>
通过key查询对应键值
getset <key> <value>
通过key给value重新复制,并且返回原来的value
setnx <key> <value>
和set <key> <value>
的作用差不多,都是添加一对键值对,但是setnx
·与set
不同的地方是,·setnx· 设置的key必须是之前不存在的,否者会返回0
mset <key1> <value1> <key2> <value2>......
添加一个或多个键值对
mget <key1> <key2>......
通过一个或多个key获取一个或多个value
msetnx <key1> <value1> <key2> <value2>......
添加一个或多个键值对,但是msetnx
设置的key必须是之前不存在的,否者会返回0
append <key> <value>
通过key将给定value添加到原本value的末尾
strlen <key>
通过key获得value的长度
getrange <key> <起始位置> <结束位置>
通过key获取value的范围内的值,类似于java中String的substring方法,但效果不大一样
setrange <key> <起始位置> <值>
通过key用值
覆盖原本从起始位置
开始的value
incr <key>
- 将key对应的value的值加1,但是如果value不是integer类型的话会报错
- 如果key对应的value的值为空,那value变为1
decr <key>
- 将key对应的value的值减1,但是如果value不是integer类型的话会报错
- 如果key对应的value的值为空,那value变为-1
incrby <key> <数字>
将key对应的value的值变为原本的value加数字
的和,但是如果value不是integer类型的话会报错
decrby <key> <数字>
将key对应的value的值变为原本的value加数字
的差,但是如果value不是integer类型的话会报错
适合于List类型
lindex <key> <index>
根据索引获取元素(从左到右)
lrange <key> <satrt> <stop>
按照索引范围获取元素(即从左到右获取)
查询开头到结尾lrange <key> 0 -1
查询结尾到开头lrange <key> -1 0
这是因为list的底层是一个双线链表,开头到结尾可以大概的理解为一个圈
llen <key>
获取list的value个数
lpush/rpush <key> <value1> <value2>
从左边/右边插入一个或多个值(也是一个一个的加),成功的话返回当前这个key对应的value个数
案例示范
lpush test 1 2 3 4 5
rpush test a b c d e
实际上存储的是54321abcde
lpop/rpop <key>
从左边/右边吐出一个值
注意:只要value未空,那key就存在,同样,value空了key也就不存在了
rpoplpop <key1> <key2>
从key1
的值得右边吐出来一个值添加到key2
的值的左边
linsert <key> befor/after <value> <newvalue>
在key
的list中,value
的前面或后面插入newvalue
lrem <key> <n> <value>
从删除n
个value
注意
- 应为list是允许重复的,
lrem
就是来专门删除这些重复数据的 - n可正可负,
正数代表从左往右删起,负数从右往左删起,0代表删除所有
适用为set
sadd <key> <value1> <value2>
将一个或多个value添加入key对应的集合中,已存在的value将会被忽略
smembers <key>
获取该集合的所有值
sismember <key> <value>
判断key所对应的集合是否含有这个value,有返回1,无返回0
scard <key>
返回key对应集合的元素个数
srem <key> <value1> <value2>
删除一个或多个key对应的集合中value
spop <key>
随机从该集合中弹出一个值
srandmember <key> <n>
随机取出key对应的n个value,而且不会像spop
命令一样删除value,取出的值仍在key对应的集合中
sinter <key1> <key2>
返回key1和key2对应集合元素的交集,及返回两个集合共同的元素
sunion <key1> <key2>
返回key1和key2对应集合元素的并集,及返回两个集合所有并去重复的元素
sdiff <key1> <key2>
返回key1和key2对应集合元素的差集,返回key1对应的集合元素减去key1与key2的交集
适用于hash类型
hset <key> <field> <value>
给键为key
的集合中定域为field
赋值为value
hsetnx <key> <field> <value>
和上面的hset
功能差不多,但是hsetnx
只有当定域field
不存在时才会成功
hget <key> <field>
获取键为key
的集合中定域为field
对应值
hmset <key1> <field1> <value1> <field2> <value2> ......
批量设置hash的值
hexists <key> <field>
查看键值为key
的集合中定域为field
是否存在,存在返回1,不存在返回0
hvals <key>
列出键值为key
的集合中所有的value,显示的格式为:一行定域,一行值
hincrby <key> <field> <increment>
在键值为key
的集合中定域为field
的进行加法,注意没有减法的命令,如果想要进行减法加一个负数即可,该命令会返回运算结果
适用于zset类型
zadd <key> <score1> <value1> <score2> <value2>
将一个或多个member元素及其评分score写入有序集合中
- 如果存在相同value且分数不同时,会替换到分数score
- 如果存在相同分数且value不同时,会正常添加
zrange <key> <start> <stop> [WITHSCORES]
- 返回键值为key的有序集合中下标在
start
和stop
之间的元素 - 查询所有
zrange <key> 0 -1
- 如果添加
[WITHSCORES]
的haul会让分数和值一起返回
zrangebyscore <key> <min> <max> [WITHSCORES] [limit offset count]
- 返回键值为key的有序集合中分数在
min
和max
之间的元素(包括分数为min和max的元素) - 显示的时候从小到大排序
- 如果添加
[WITHSCORES]
的haul会让分数和值一起返回 - 如果添加
[limit offset count]
可以指定返回结果的数量及区间
zrevrangebyscore <key> <max> <min> [WITHSCORES] [limit offset count]
和上面zrangebyscore
的作用差不多,但是zrevrangebyscore
是从大到下,而zrangebyscore
是从小到大
zincrby <key> <increment> <value>
给键值为key
的集合中值为value
的分数score真假加increment
zrem <key> <value>
删除键值为key
的集合中值为value的这个元素
zcount <key> <min> <max>
统计键值为key
的集合分数score在min
和max
之间的元素个数
zrank <key> <value>
返回集合中的排名,从0开始