数据库命令
查看键的类型
TYPE key
注: 返回键的类型
HyperLogLog类型返回string,HyperLogLog底层实现是二进制值,字符串类型可以储存二进制值,HyperLogLog直接只用字符串类型存储
获取键命令
1.随机获取某个键
RANDOMKEY
注:在当前数据库中随机返回一个键,返回的键不会被删除
2.返回数据库中与给定模式匹配的键
KEYS *
数据库中所有键
KEYS h?llo
匹配hello hallo hillo等
KEYS h*llo
匹配hello hllo hiillo等
KEYS h[ae]llo
匹配hello hallo
3.渐进遍历整个数据库与给定模式的键
注:SCAN 命令以渐进的方式遍历整个数据库
SCAN cursor [MATCH pattern][COUNT number]
注: cursor 参数是遍历使用的游标第一次遍历是零,每次遍历会返回游标下次遍历使用
MATCH pattern 选项用户指定匹配模式
COUNT number 选项用于指定一次遍历返回都少键
删除键
DEL key [key...]
删除给定任意多个键,不存在的键会被忽略
检查键是否存在
EXISTS key
注:检查键是否存在,存在返回1,不存在返回0
修改键名
RENAME key newkey
注:将key改为newkey 如果已存在覆盖,返回ok
RENAMENX key newkey
注:newkey不存在将key改为newkey 如果已存在不做操作
SORT命令
SORT key
注:将键包含的值解释为浮点数,然后对这些值进行排序
SORT key ASC // 升序 默认参数可省略
SORT key DESC // 降序
SORT key ALPHA // ALPHA 参数基于字典序对文字进行排序
获取数据库的大小
DBSIZE
注:查找当前数据库的key的数量
切换数据库
SELECT num
注:redis默认创建0-15号数据库,默认使用0号数据库,可以使用命令切换数据库
在数据库键移动键
MOVE key target-db
注:将key移动到目标数据库中
键设置过期时间
expire key second
注:为给定key设置过期时间,单位为秒
移除键的过期时间
persist key
注:移除key的过期时间,key将持久保存
查看键剩余生存时间
ttl key
注:以秒为单位,返回给定key的剩余生存时间(TTL , time to live)
String数据类型
- 结构:Key-Value
- Value:可以是字符串、数字,也可以是二进制数组
- 限制:Value最大值为512MB
1.get key
注:获取指定key的值
2.set key value
注:设置指定key的值
3.incr key
注:将key中存储的数字值增一
4.incrby key increment
注:将key所存储的数字值加上给定的增量
5.decr key
注:将key中存储的数字值减一
6.decrby key decrement
注:将key所存储的数字值减去给定的减量
7.setnx key value
注:只有当key不存在时才设置key的值
8.set key value nx
注:与⑦相同,只有当key不存在时才设置key的值
9.setex key second value
注:设置指定key的值,同时设置该key的过期时间,单位为秒
10.set key second value ex
注:与⑨相同,设置指定key的值,同时设置该key的过期时间,单位为秒
11.set key value xx
注:只有key存在时才设置key的值
12.mget key1 [key2...]
注:获取所有(一个或多个)指定key的值
13.mset key1 value1 [key2 value2...]
注:同时设置一个或多个key-value对
14.getset key value
注:将给定key的值设置为value,并返回key的旧值
15.append key value
注:将value追加到旧值的末尾
16.strlen key
注:返回key所存储的字符串值的长度
- 当key不存在时,返回0
- 一个中文占2个字节
- 时间复杂度为O(1),strlen在redis内部不需要查询整个字符串来得到长度
17.incrbyfloat key increment
注:将key所存储的值加上给定的浮点值
18.getrange key start end
注:返回key中字符串区间为[start,end]的子串,索引从0开始
19.setrange key offset value
注:用value擦书覆盖指定key所存储的字符串值,从偏移量offset开始,索引从0开始
- key = content的时候,执行setrange key 1 haha 之后,key=chahant
Hash数据类型
1.hget key field
注:获取存储在哈希表中指定field的值
2.hset key field value
注:将哈希表中指定field的值设置为value
3.hdel key field1 [field2...]
注:删除哈希表中一个或多个field
4.hexists key field
注:判断哈希表中,指定field是否存在
5.hlen key
注:获取哈希表中字段的数量
6.hmget key field1 [field2...]
注:获取哈希表中所有给定field的值
7.hmset key field1 value1 [field2 value2...]
注:同时将一个或多个field-value对设置到哈希表中
8.hincrby key fiel increment
注:为哈希表中指定field的值加上一个整型增量
9.hgetall key
- 含义:获取哈希表中所有字段和值
- 时间复杂度为O(n),不建议使用
10.hkeys key
注:获取哈希表中的所有字段
- 时间复杂度为O(n),不建议使用
11.hvals key
注:获取哈希表中的所有值
- 时间复杂度为O(n),不建议使用
12.hsetnx key field value
注:只有当哈希表中field不存在时,才设置该field的值
13.hincrbyfloat key field increment
注:为哈希表中指定field的值加上一个浮点数增量
List数据类型
- 列表:有序、可以有重复元素
1.rpush key value1 [value2...]
注:在列表后侧添加一个或多个值
2.lpush key value1 [value2...]
注:在列表左侧添加一个或多个值
3.linsert key before/after value newValue
注:在列表指定的value前/后插入newValue,时间复杂度为O(n)
4.lpop key
注:从列表左侧弹出一个值
5.rpop key
注:从列表右侧弹出一个值
6.lrem key count value
注:根据count值,从列表中删除值为value的项,时间复杂度为O(n)
- count > 0 时,从左往右遍历,删除最多count个与value相等的值
- count < 0 时,从右往左遍历,删除最多Math.abs(count)个与value相等的值
- count = 0 时,删除所有与value相等的值
7.ltrim key start end
注:对一个列表进行修剪,只保留指定区间内的元素,不在区间内的元素都将被删除,时间复杂度为O(n)
8.lrange key start end
注:获取列表指定索引范围的所有元素,时间复杂度为O(n)
9.lindex key index
注:获取列表指定索引的元素,时间复杂度为O(n)
10.llen key
注:获取列表长度,时间复杂度为O(1)
11.lset key index newValue
注:设置列表指定索引的值为newValue,时间复杂度为O(n)
- 注意:
- 必须存在这个值才能设置成功,否则会报错
12.blpop key timeout
注:移除并获取列表左边第一个元素,如果列表没有元素会阻塞直到等待超时或可弹出元素为止
- timeout单位为秒,timeout=0时不阻塞
13.brpop key timeout
注:移除并获取列表右边第一个元素,如果列表没有元素会阻塞直到等待超时或可弹出元素为止
- timeout单位为秒,timeout=0时不阻塞
Set数据类型
- 集合:无序、不能包含重复元素
1.sadd key memebr1 [member2...]
注:向集合中添加一个或多个成员
2.srem key member1 [member2...]
注:从集合中删除一个或多个成员
3.scard key
注:获取集合中的元素个数
4.sismember key member
注:判断member元素是不是集合的成员
5.srandmember key count
注:随机从集合中取出count个成员
6.spop key
注:随机移除并返回集合中的一个成员
7.smembers key
注:获取集合中的所有成员
- 时间复杂度为O(n),不建议使用,类似的操作可以使用SSCAN
8.sdiff key1 [key2...]
注:返回给定所有集合的差集
9.sdiffstore destKey key1 [key2...]
注:计算给定所有集合的差集,并存入destKey
10.sinter key1 [key2...]
注:返回给定所有集合的交集
11.sinterstore destKey key1 [key2...]
注:计算给定所有集合的交集,并存入destKey
12.sunion key1 [key2...]
注:返回给定所有集合的并集
13.sunionstore destKey key1 [key2...]
注:计算给定所有集合的并集,并存入destKey
ZSet数据类型
- 有序集合:有序、不能包含重复元素
- 每个节点包含:score和value两个属性,根据score进行排序
1.zadd key score1 member1 [score2 member2...]
注:向有序集合添加一个或多个成员,或者更新已存在成员的分数
2.zrem key member1 [member2...]
注:从有序集合中删除一个或多个成员
3.zscore key member
注:获取有序集合中成员的分数
4.zincrby key increment member
注:对有序集合中指定成员的分数加上增量increment
5.zcard key
注:返回有序集合中元素的总个数
6.zrange key start end [withscores]
注:通过索引返回有序集合中指定区间的成员信息
- withscores 参数,加上代表一并将score数据返回
7.zrangebyscore key min max [withscores][limit]
注:通过score返回有序集合中指定分数区间的成员信息
- withscores 参数,加上代表一并将score数据返回
- limit参数,加上代表限制返回多少条数据
8.zscore key min max
注:返回有序集合中指定分数范围内的元素个数
9.zremrangebyscore key min max
注:删除有序集合中指定分数区间的所有成员
10.zremrangebyrank key start end
注:删除有序集合中给定索引区间的所有成员