redis 命令大全

全局命令:

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

上一篇:解决weblogic启动缓慢 linux系统随机数问题


下一篇:new Image()的用途