Redis命令

Redis命令

字符串相关

set

给key设置一个value,设置时可以加一些功能参数,如果:过期时间,存在设置,不存在设置等。

  • 格式:set key value [EX 秒|PX 毫秒][XX|NX][GET]
    • EX seconds – 设置键key的过期时间,单位时秒
    • PX milliseconds – 设置键key的过期时间,单位时毫秒
    • NX – 只有键key不存在的时候才会设置key的值
    • XX – 只有键key存在的时候才会设置key的值
    • GET - 获取设置的值
  • 版本:since 1.0
  • 时间复杂的:O(N)
# 当不存在一个akay时为akay设置值12345
127.0.0.1:6379> set akey 12345 ex 10 nx 
OK
127.0.0.1:6379> get akey
"12345"

# 当存在kay是kkk时,设置kkk的value为12345
127.0.0.1:6379> set kkk 12345 ex 60 xx
(nil)	# fail
127.0.0.1:6379> set kkk 11
OK	
127.0.0.1:6379> set kkk 12345 ex 60 xx
OK	# success

setex

设置一个key并设置过期时间。等效于以下两个命令,两个命令的执行时原子操作。

# 等价方式1
multi
set key value
expire key expire_seconds
exec

# 等价方式2
set key value ex expire_secconds
set key value px millsecconds
  • 格式:setex key expire_seconds value
  • 版本:since 2.0

mset

一次设置多个key的value。

  • 格式: mset key1 value1 key2 value2 ...
  • 版本:since 1.0.1
  • 时间复杂度:O(N)

msetnx

设置多个key value,当key任何一个key都不存在时。

  • 格式:msetnx key1 value1 key2 value2 ...
  • 版本:since 1.0.1
  • 返回值:
    • 1 - 所有的key都被设置了值
    • 0 - 都没设置值

get

获取一个key的值。

  • 格式:get key
  • 版本:since 1.0.0
  • 时间复杂度:O(1)
  • 返回值:key的value 或 nil

getset

设置一个值,并获取之前设置的值。

mget

一次获取多个值。当值不存在时返回nil。

  • 格式:mget key1 key2
  • 版本:1.0
  • 时间复杂度:O(N)

append

向redis中的key追加内容,如果key不存在会先创建长度为0的key,然后向其中追加字符。

  • 格式:append key value
  • 返回:整数,标识字符串长度
  • 版本:since 2.0.0
127.0.0.1:6379> EXISTS kkk
(integer) 0
127.0.0.1:6379> append kkk 123456
(integer) 6
127.0.0.1:6379> get kkk
"123456"
127.0.0.1:6379> append kkk 789
(integer) 9
127.0.0.1:6379> get kkk
"123456789"

strlen

获取字符串的长度。

  • 格式:strlen key
  • 返回:整数,表示字符串的长度
  • 时间复杂度:O(1)

incr/decr

当字符串的模式是数字,对字符串原子加1.
当字符串的模式是数字,对字符串原子减1.

  • 格式: incr/decr key
  • 时间复杂度:O(1)
  • 返回值:自增/递减后的值
127.0.0.1:6379> set key "100"
OK
127.0.0.1:6379> incr key
(integer) 101
127.0.0.1:6379> decr key
(integer) 100

incrby/decrby

字符串模式是数字,原子增加或减少一个数。

  • 格式:
    • incrby key number
    • decrby key number
  • 版本:1.0.0
  • 时间复杂度:O(1)
  • 返回值:增加/减少的值

bgsave

后台保存DB。redis会fork一个子进程dump内存数据,然后立即返回OK状态码。

  • 版本: since 1.0.0

bitcount

统计字符串被设置为1的bit数。一般整个字符串都会被技术,通过start、end可以指定范围。

  • 格式:bitcount key [start end]
  • 版本:since 2.6
  • 时间复杂度:O(N)
127.0.0.1:6379> set lqc A
OK
127.0.0.1:6379> BITCOUNT lqc
(integer) 2

A 的二进制 1000001,二进制位数为2.

配合setbit命令可以实现bitmap,可以用来统计次数。例如统计用户在线天数,以用户名为key,偏移记天数,setbit lqc 1; setbit lqc 2;set bit lqc 4; bitcount lqc。因为使用bit存储,空间利用率很高。

bitfield

这个命令会把redis字符串当作位数组,并能够对变长位和任意位字节对齐的指定整型位域进行寻址。和任意未字节对齐的指定整型位域进行寻址。

List操作

lpush/rpush

从队列左边/右边插入一个或多个元素。

  • 格式:lpush queue_key key1 key2...
  • 返回值:整肃,队列的长度
  • 时间复杂度:O(1)

lpushx/rpushx

只有当 key 已经存在并且存着一个 list 的时候,在这个 key 下面的 list 的头部插入 value。

lpop/rpop

从list的左边/右边出队一个元素。

  • 格式: lpop key
  • 返回值:出队元素/nil

blpop/brpop

带阻塞行为的出队操作,一次可以取多个list的元素,当list为空操作被阻塞。
一次取多个key时,会弹出第一非空list的元素,并与key一起返回客户端。

  • 格式:blpop key1 [key2] timeout
    • timeout - 超时时间,秒
  • 返回值:
# 获取空list
127.0.0.1:6379> del key1 key2
(integer) 2
127.0.0.1:6379> BLPOP key1 key2 3
(nil)
(3.05s)

# 获取非空list
127.0.0.1:6379> rpush key1 1 2 3
(integer) 3
127.0.0.1:6379> rpush key2 1 2 3
(integer) 3
127.0.0.1:6379> BLPOP key1 key2 3
1) "key1"
2) "1"

brpoplpush/rpoplpush

lindex

llen

lset

lrem

lrange

redis事务操作

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×