全局命令:
1、查看所有键:keys *
2、键总数:dbsize
3、检查键是否存在:exists key
4、删除键:del key [key ...]
5、键过期:expire key seconds ——当超过过期时间后,会自动删除键,例:expire hello 10
6、键的剩余过期时间:ttl key ——返回键的剩余过期时间:大于等于0的整数:键剩余的过期时间;-1:键没设置过期时间;-2:键不存在
7、键的数据结构类型:type key ——string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合);键不存在,则返回none
字符串类型相关命令:
1、设置值:set key value [ex seconds] [px milliseconds] [nx|xx]
——ex seconds:为键设置秒级过期时间;px milliseconds:为键设置毫秒级过期时间;nx:键必须不存在,才可以设置成功,用于添加;xx:与nx相反,键必须存在,才可以设置成功,用于更新。
2、setex key seconds value
3、setnx key value
——setex和setnx两个命令,它们的作用和ex和nx选项一样
4、获取值:get key
5、批量设置值:mset key value [key value ...]
6、批量获取值:mget key [key ...]
7、计数:incr key
——值不是整数,返回错误;值是整数,返回自增后的结果;键不存在,按照值为0自增,返回结果为1。
8、自减:decr key
9、自增指定数字:incrby key increment
10、自减指定数字:decrby key decrement
11、自增浮点数:incrbyfloat key increment
12、向字符串尾部追加值:append key value
13、字符串长度:strlen key
14、设置并返回原值:getset key value
15、设置指定位置的字符:setrange key offeset value
——例:setrange hello 0 e
16、获取部分字符串:getrange key start end ——start和end分别是开始和结束的偏移量,偏移量从0开始计算
哈希类型相关命令
1、设置值:hset key field value
2、设置值:hsetnx key field value
——set和setnx命令一样,只不过作用域由键变为field。
3、获取值:hget key field
4、删除field:hdel key field [field ...]
5、计算field个数:hlen key
6、批量设置field-value:hmget key field [field ...]
7、批量获取field-value:hmset key field value [field value ...]
8、判断field是否存在:hexists key field
9、获取所有field:hkeys key
10、获取所有value:hvals key
11、获取所有的field-value:hgetall key
12、自增指定数字:hincrby key field increment
13、自增浮点数:hincrbyfloat key field increment
14、计算value的字符串长度:hstrlen key field
列表类型相关命令
1、从右向左插入元素:rpush key value [value ...]
2、从左向右插入元素:lpush key value [value ...]
3、向某个元素前或者后插入元素:linsert key before|after pivot value
——从列表中找到等于pivot的元素,在其前(before)或者后(after)插入一个新的元素value
4、获取指定范围内的元素列表:lrange key start end
——索引下标从左到右分别是0到N-1,但是从右到左分别是-1到-N。lrange中的end选项包含了自身
5、从左到右获取元素:lrange key 0 -1
6、获取列表指定索引下标的元素:lindex key index
7、获取列表最后一个元素:lindex key -1
8、获取列表长度:llen key
9、删除最左侧元素:lpop key
10、删除最右侧元素:rpop key
11、删除指定元素:lrem key count value
——从列表中找到等于value的元素进行删除。count>0,从左到右,删除最多count个元素;count<0,从右到左,删除最多count绝对值个元素;count=0,删除所有。
12、按照索引范围修剪列表:ltrim key start end
——保留列表key第start+1个到第end+1个元素
13、修改指定索引下标的元素:lset key index newValue
14、阻塞式删除最左侧元素:blpop key [key ...] timeout
15、阻塞式删除最右侧元素:brpop key [key ...] timeout
——key[key...]:多个列表的键;timeout:阻塞时间(单位:秒)。
1)列表为空:如果timeout=3,那么客户端要等到3秒后返回,如果timeout=0,那么客户端一直阻塞等下去:如果此期间添加了数据,客户端立即返回
2)列表不为空:客户端会立即返回。
3)如果是多个键,那么brpop会从左至右遍历键,一旦有一个键能弹出元素,客户端立即返回
4)如果多个客户端对同一个键执行brpop,那么最先执行brpop命令的客户端可以获取到弹出的值。
集合类型相关命令
1、添加元素:sadd key element [element ...]
2、删除元素:srem key element [element ...]
3、计算元素个数:scard key
4、判断元素是否在集合中:sismember key element
5、随机从集合返回指定个数元素:srandmember key [count]
——[count]是可选参数,如果不写默认为1
6、从集合随机删除元素:spop key [count]
7、获取所有元素:smembers key
8、求多个集合的交集:sinter key [key ...]
9、求多个集合的并集:suinon key [key ...]
10、求多个集合的差集:sdiff key [key ...]
11、将交集、并集、差集的结果保存
sinterstore destination key [key ...]
suionstore destination key [key ...]
sdiffstore destination key [key ...]
有序集合类型相关命令
1、添加成员:zadd key score member [score member ...]
2、计算成员个数:zcard key
3、计算某个成员的分数:zscore key member
4、计算成员从分数从低到高的排名:zrank key member
5、计算成员从分数从高到低的排名:zrevrank key member
6、删除成员:zrem key member [member ...]
7、增加成员的分数:zincrby key increment member
8、返回指定排名范围的成员:
zrange key start end [withscores]
——从低到高返回,如果加上withscores选项,同时会返回成员的分数
zrevrange key start end [withscores]
9、返回指定分数范围的成员:
zrangebyscore key min max [withscores] [limit offset count]
zrevrangebyscore key max min [withscores] [limit offset count]
zrangebyscore按照分数从低到高返回,withscores选项会同时返回每个成员的分数。[limit offset count]选项可以限制输出的起始位置和个数;同时min和max还支持开区间(小括号)和闭区间(中括号),-inf和+inf分别代表无限小和无限大,例:zrangebyscore key (200 +inf withscores
10、返回指定分数范围成员个数:zcount key min max
11、删除指定排名内的升序元素:zremrangebyrank key start end
12、删除指定分数范围的成员:zremrangebyscore key min max
13、集合交集:zinterstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]
destination:交集计算结果保存到这个键。
numkeys:需要做交集计算键的个数。
key[key...]:需要做交集计算的键。
weights weight[weight...]:每个键的权重,在做交集计算时,每个键中的每个member会将自己分数乘以这个权重,每个键的权重默认是1。
aggregate sum|min|max:计算成员交集后,分值可以按照sum(和)、min(最小值)、max(最大值)做汇总,默认值是sum。
14、集合并集:zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]
单键管理通用命令:
1、键重命名:rename key newkey
——为了防止被强行rename,Redis提供了renamenx命令,确保只有newKey不存在时候才被覆盖
2、随机返回一个键:randomkey
3、键在seconds秒后过期:expire key seconds
4、键在秒级时间戳timestamp后过期:expireat key timestamp
5、查询键的剩余过期时间(毫秒级):pttl key
6、键在milliseconds毫秒后过期:pexpire key milliseconds
7、键在毫秒级时间戳timestamp后过期:pexpireat key milliseconds-timestamp
在使用Redis相关过期命令时,需要注意以下几点。
1)如果expire key的键不存在,返回结果为0:
2)如果过期时间为负值,键会立即被删除,犹如使用del命令一样
3)对于字符串类型键,执行set命令会去掉过期时间
清除键的过期时间:persist key
4)Redis不支持二级数据结构(例如哈希、列表)内部元素的过期功能,例如不能对列表类型的一个元素做过期时间设置。
5)setex命令作为set+expire的组合,不但是原子执行,同时减少了一次网络通讯的时间。
迁移键相关命令:
1、在Redis内部进行数据迁移:move key db
2、在不同的Redis实例之间进行数据迁移:dump+restore
dump key
——dump命令会将键值序列化,格式采用的是RDB格式。
restore key ttl value
——在目标Redis上,restore命令将上面序列化的值进行复原,其中ttl参数代表过期时间,如果ttl=0代表没有过期时间。
3、在Redis实例间进行数据迁移:migrate host port key|"" destination-db timeout [copy] [replace] [keys key [key ...]]
migrate命令整个过程是原子执行的,不需要在多个Redis实例上开启客户端的,只需要在源Redis上执行migrate命令即可。
host:目标Redis的IP地址。
port:目标Redis的端口。
key|"":在Redis3.0.6版本之前,migrate只支持迁移一个键,所以此处是要迁移的键,但Redis3.0.6版本之后支持迁移多个键,如果当前需要迁移多个键,此处为空字符串""。
destination-db:目标Redis的数据库索引,例如要迁移到0号数据库,这里就写0。
timeout:迁移的超时时间(单位为毫秒)。
[copy]:如果添加此选项,迁移后并不删除源键。
[replace]:如果添加此选项,migrate不管目标Redis是否存在该键都会正常迁移进行数据覆盖。
[keys key[key...]]:迁移多个键,例如要迁移key1、key2、key3,此处填写“keys key1 key2 key3”。
遍历键
1、全量遍历键:keys pattern
——pattern使用的是glob风格的通配符:*代表匹配任意字符。[]代表匹配部分字符;
2、渐进式遍历:scan cursor [match pattern] [count number]
——面向哈希类型、集合类型、有序集合的扫描遍历对应的命令分别是hscan、sscan、zscan
·cursor是必需参数,实际上cursor是一个游标,第一次遍历从0开始,每次scan遍历完都会返回当前游标的值,直到游标值为0,表示遍历结束。
·match pattern是可选参数,它的作用的是做模式的匹配。
·count number是可选参数,它的作用是表明每次要遍历的键个数,默认值是10,此参数可以适当增大。
数据库管理命令
1、切换数据库:select dbIndex
——select 0 操作将切换到第一个数据库
2、清除当前数据库:flushdb
3、清除所有数据库:flushall
慢查询:
1、获取慢查询日志:slowlog get [n]
2、获取慢查询日志列表当前的长度:slowlog len
3、慢查询日志重置:slowlog reset
事务相关:
1、事务开始:multi
2、事务结束:exec
3、停止事务:discard
4、判断key没有被其他客户端修改过:watch key
Bitmaps相关:
1、设置值:setbit key offset value
——设置键的第offset个位的值(从0算起)
2、获取值:gitbit key offset
3、获取Bitmaps指定范围值为1的个数:bitcount key [start][end]
——[start]和[end]代表起始和结束字节数
4、Bitmaps间的运算:bitop op destkey key[key....]
bitop是一个复合操作,它可以做多个Bitmaps的and(交集)、or(并集)、not(非)、xor(异或)操作并将结果保存在destkey中。
5、计算Bitmaps中第一个值为targetBit的偏移量:bitpos key targetBit [start] [end]
HyperLogLog相关
1、向HyperLogLog添加元素:pfadd key element [element …]
2、计算一个或多个HyperLogLog的独立总数:pfcount key [key …]
3、合并:pfmerge destkey sourcekey [sourcekey ...] ——求出多个HyperLogLog的并集并赋值给destkey
发布订阅相关:
1、发布消息:publish channel message
2、订阅消息:subscribe channel [channel ...]
3、取消订阅:unsubscribe [channel [channel ...]]
4、按照模式订阅和取消订阅:
psubscribe pattern [pattern...]
punsubscribe [pattern [pattern ...]]
5、查看活跃的频道:pubsub channels [pattern]
——所谓活跃的频道是指当前频道至少有一个订阅者,其中[pattern]是可以指定具体的模式
6、查看频道订阅数:pubsub numsub [channel ...]
7、查看模式订阅数:pubsub numpat
GEO相关
1、增加地理位置信息:geoadd key longitude latitude member [longitude latitude member ...]
——longitude、latitude、member分别是该地理位置的经度、纬度、成员
2、获取地理位置信息:geopos key member [member ...]
3、获取两个地理位置的距离:geodist key member1 member2 [unit]
4、获取指定位置范围内的地理信息位置集合:
georadius key longitude latitude radiusm|km|ft|mi [withcoord] [withdist] [withhash] [COUNT count] [asc|desc] [store key] [storedist key]
georadiusbymember key member radiusm|km|ft|mi [withcoord] [withdist] [withhash] [COUNT count] [asc|desc] [store key] [storedist key]
georadius和georadiusbymember两个命令的作用是一样的,都是以一个地理位置为中心算出指定半径内的其他地理信息位置,不同的是georadius命令的中心位置给出了具体的经纬度,georadiusbymember只需给出成员即可。其中radiusm|km|ft|mi是必需参数,指定了半径(带单位)
·withcoord:返回结果中包含经纬度。
·withdist:返回结果中包含离中心节点位置的距离。
·withhash:返回结果中包含geohash,有关geohash后面介绍。
·COUNT count:指定返回结果的数量。
·asc|desc:返回结果按照离中心节点的距离做升序或者降序。
·store key:将返回结果的地理位置信息保存到指定键。
·storedist key:将返回结果离中心节点的距离保存到指定键。
5、将二维经纬度转换为一维字符串:geohash key member [member ...]
6、删除地理位置信息:zrem key member