文章目录

  • redis数据结构常用的命令
  • key(键)
  • del
  • keys
  • RANDOMKEY
  • TTL
  • EXISTS
  • MOVE
  • RENAME
  • TYPE
  • EXPIRE
  • String(字符串)
  • SET
  • `SETNX`
  • SETEX
  • MSET
  • MSETNX
  • APPEND
  • GET
  • MGET
  • GETSET
  • STRLEN
  • DECR
  • DECRBY
  • INCR INCRBY
  • Hash(哈希表)
  • HSET
  • HSETNX
  • HMSET 与HMGET
  • HGETALL
  • HDEL
  • HLEN
  • HEXISTS
  • HKEYS
  • HVALS
  • List(列表)
  • LPUSH
  • LPUSHX
  • RPUSH
  • LPOP
  • RPOP
  • Set(集合)
  • SADD
  • SREM
  • SMEMBERS
  • SortedSet(有序集合)
  • ZADD


redis数据结构常用的命令

key(键)

del

格式:DEL key [key …]
删y删除一个key或者多个key

127.0.0.1:6379> del k1
(integer) 1

keys

格式:keys pattern
查找所有符合给定模式 pattern 的 key 。
还可以指定正则表达式。

127.0.0.1:6379> keys *
1) "key1"
2) "\xac\xed\x00\x05t\x00\x04name"
3) "k2"
4) "\xac\xed\x00\x05t\x00\x03age"
5) "\xac\xed\x00\x05t\x00\aaddress"

RANDOMKEY

格式:randomkey
从当前数据库中随机返回(不删除)一个 key 。

127.0.0.1:6379> randomkey
"\xac\xed\x00\x05t\x00\x03age"

TTL

格式:ttl key
以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
返回值:
当 key 不存在时,返回 -2 。
当 key 存在但没有设置剩余生存时间时,返回 -1 。
否则,以秒为单位,返回 key 的剩余生存时间。

127.0.0.1:6379> set k3 2
OK
127.0.0.1:6379> ttl k2
(integer) -1
127.0.0.1:6379> ttl k3
(integer) -1
127.0.0.1:6379> del k3
(integer) 1
127.0.0.1:6379> set k3 10
OK
127.0.0.1:6379> ttl k3
(integer) -1
127.0.0.1:6379> expire k3 5
(integer) 1
127.0.0.1:6379> ttl k3
(integer) 2
127.0.0.1:6379> ttl k3
(integer) -2
127.0.0.1:6379>

EXISTS

格式:exists key
检查给定 key 是否存在。

127.0.0.1:6379> exists k3
(integer) 0
127.0.0.1:6379> exists k2
(integer) 1

MOVE

格式:move key db
将当前数据库的 key 移动到给定的数据库 db 当中。

127.0.0.1:6379> move k1 1
(integer) 1
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "k1"

RENAME

格式:rename key newkey
将 key 改名为 newkey 。
当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。
当 newkey 已经存在时, RENAME 命令将覆盖旧值。

127.0.0.1:6379[1]> set name elite
OK
127.0.0.1:6379[1]> keys *
1) "k1"
2) "name"
127.0.0.1:6379[1]> rename name name1
OK
127.0.0.1:6379[1]> keys *
1) "k1"
2) "name1"

TYPE

格式:type key
返回 key 所储存的值的类型。

127.0.0.1:6379[1]> type name1
string

EXPIRE

格式:expire key seconds
为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。在 Redis 中,带有生存时间的 key 被称为『可挥发』(volatile)的。

String(字符串)

SET

格式:set key value
将字符串值 value 关联到 key 。
如果 key 已经持有其他值, SET 就覆写旧值,无视类型。

127.0.0.1:6379> set name elite
OK
127.0.0.1:6379> set name elite1
OK
127.0.0.1:6379> get name
"elite1"

SETNX

这个命令很重要,在分布式锁中会用到。 格式:setnx key value
将 key 的值设为 value ,当且仅当 key 不存在。
若给定的 key 已经存在,则 SETNX 不做任何动作。
SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。

127.0.0.1:6379> setnx name elite
(integer) 0
127.0.0.1:6379> setnx name1 elite1
(integer) 1
127.0.0.1:6379> setnx name1 elite2
(integer) 0

SETEX

格式:setex key seconds value
将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。
如果 key 已经存在, SETEX 命令将覆写旧值。

127.0.0.1:6379> setex name2 10 elite2
OK
127.0.0.1:6379> TTL name2
(integer) 9
127.0.0.1:6379> TTL name2
(integer) 7
127.0.0.1:6379> TTL name2
(integer) 6

MSET

格式:mset key value [key value …]
同时设置一个或多个 key-value 对。

127.0.0.1:6379> mset k1 v1 k2 v2
OK
127.0.0.1:6379> keys *
1) "k1"
2) "k2"

MSETNX

格式:msetnx key value [key value …]
同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
即使只有一个给定 key 已存在, MSETNX 也会拒绝执行所有给定 key 的设置操作。
MSETNX 是原子性的,因此它可以用作设置多个不同 key 表示不同字段(field)的唯一性逻辑对象(unique logic object),所有字段要么全被设置,要么全不被设置。

127.0.0.1:6379> msetnx k1 v1 k2 v2
(integer) 0
127.0.0.1:6379> msetnx k3 v3 k4 v4
(integer) 1

APPEND

格式:append key value
如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。

127.0.0.1:6379> append k5 v5
(integer) 2
127.0.0.1:6379> append k4 append
(integer) 8
127.0.0.1:6379> get k4
"v4append"

GET

格式:get key
返回 key 所关联的字符串值。
如果 key 不存在那么返回特殊值 nil 。
假如 key 储存的值不是字符串类型,返回一个错误,因为 GET 只能用于处理字符串值。

MGET

格式:mget key [key …]
返回所有(一个或多个)给定 key 的值。
如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。因此,该命令永不失败。

GETSET

格式:getset key value
将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
当 key 存在但不是字符串类型时,返回一个错误。

127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> getset k1 v11
"v1"

STRLEN

格式:strlen key
返回 key 所储存的字符串值的长度。
当 key 储存的不是字符串值时,返回一个错误。

127.0.0.1:6379> getset k1 v11
"v1"
127.0.0.1:6379> strlen k1
(integer) 3
127.0.0.1:6379> set k2 112122asadws
OK
127.0.0.1:6379> strlen k2
(integer) 12

DECR

格式:decr key
将 key 中储存的数字值减一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。

127.0.0.1:6379> set count 1
OK
127.0.0.1:6379> decr count
(integer) 0
127.0.0.1:6379> decr count
(integer) -1
127.0.0.1:6379> decr count
(integer) -2

DECRBY

格式:decrby key decrement
将 key 所储存的值减去减量 decrement 。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

127.0.0.1:6379> set count 10
OK
127.0.0.1:6379> decrby count 2
(integer) 8
127.0.0.1:6379> decrby count 3
(integer) 5

INCR INCRBY

格式:incr key
格式:incrby key increment
将 key 中储存的数字值增一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

127.0.0.1:6379> set count 0
OK
127.0.0.1:6379> incr count
(integer) 1
127.0.0.1:6379> incr count
(integer) 2
127.0.0.1:6379> incr count
(integer) 3
127.0.0.1:6379> incrby count 3
(integer) 6

Hash(哈希表)

HSET

格式:hset key field value
将哈希表 key 中的域 field 的值设为 value 。
如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作。
如果域 field 已经存在于哈希表中,旧值将被覆盖。

127.0.0.1:6379> hset map name elite
(integer) 1
127.0.0.1:6379> keys *
1) "map"
2) "count"
127.0.0.1:6379> hset map age 12
(integer) 1

HSETNX

格式:hsetnx key field value
将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。
若域 field 已经存在,该操作无效。
如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。

127.0.0.1:6379> hsetnx map name elite1
(integer) 0
127.0.0.1:6379> hsetnx map name1 elite1
(integer) 1

HMSET 与HMGET

格式:hmset key field value [field value …]
同时将多个 field-value (域-值)对设置到哈希表 key 中。
此命令会覆盖哈希表中已存在的域。
如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。

127.0.0.1:6379> hmset person name elite age 12 address xxpro
OK
127.0.0.1:6379> hmget person name age address
1) "elite"
2) "12"
3) "xxpro"

HGETALL

格式:hgetall key
返回哈希表 key 中,所有的域和值。
在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。

127.0.0.1:6379> HGETALL person
1) "name"
2) "elite"
3) "age"
4) "12"
5) "address"
6) "xxpro"

HDEL

格式:hdel key field [field …]
删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。

127.0.0.1:6379> hdel person name age
(integer) 2

HLEN

格式:hlen key
返回哈希表 key 中域的数量。

127.0.0.1:6379> hmset person name elite age 12 address xxpro
OK
127.0.0.1:6379> hlen person
(integer) 3

HEXISTS

格式:hexists key field
查看哈希表 key 中,给定域 field 是否存在。

127.0.0.1:6379> hmset person name elite age 12 address xxpro
OK
127.0.0.1:6379> hexists person name
(integer) 1
127.0.0.1:6379> hexists person job
(integer) 0

HKEYS

格式:hkeys key
返回哈希表 key 中的所有域。

127.0.0.1:6379> hkeys person
1) "name"
2) "age"
3) "address"

HVALS

格式:hvals key
返回哈希表 key 中所有域的值。

127.0.0.1:6379> hvals person
1) "elite"
2) "12"
3) "xxpro"

List(列表)

LPUSH

格式:lpush key value [value …]
将一个或多个值 value 插入到列表 key 的表头

127.0.0.1:6379> lpush subject chinese math english
(integer) 3
127.0.0.1:6379> lpush subject chinese
(integer) 4

LPUSHX

格式:lpushx key value
将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。
和 LPUSH 命令相反,当 key 不存在时, LPUSHX 命令什么也不做。

127.0.0.1:6379> lpushx subject geog
(integer) 5
127.0.0.1:6379> lpushx mylist 12
(integer) 0

RPUSH

格式:rpush key value [value …]
将一个或多个值 value 插入到列表 key 的表尾(最右边)。

127.0.0.1:6379> rpush mylist a b c d
(integer) 4

LPOP

格式:lpop key
移除并返回列表 key 的头元素。

127.0.0.1:6379> rpush mylist a b c d
(integer) 4
127.0.0.1:6379> lpop mylist
"a"

RPOP

格式:rpop key
移除并返回列表 key 的尾元素。

127.0.0.1:6379> rpush mylist a b c d
(integer) 4
127.0.0.1:6379> rpop mylist
"d"

Set(集合)

SADD

格式:sadd key member [member …]
将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将
被忽略。
假如 key 不存在,则创建一个只包含 member 元素作成员的集合。
当 key 不是集合类型时,返回一个错误。

127.0.0.1:6379> sadd set a b c
(integer) 3

SREM

格式:srem key member [member …]
移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
当 key 不是集合类型,返回一个错误。

127.0.0.1:6379> sadd set a b c
(integer) 3
127.0.0.1:6379> srem set d
(integer) 0
127.0.0.1:6379> srem set a
(integer) 1

SMEMBERS

格式:smembers key
返回集合 key 中的所有成员。
不存在的 key 被视为空集合。

127.0.0.1:6379> sadd set a b c
(integer) 1
127.0.0.1:6379> smembers set
1) "a"
2) "c"
3) "b"

其他的操作命令这里不在继续。。。

SortedSet(有序集合)

ZADD

格式:zadd key score member [[score member] [score member] …]
将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过
重新插入这个 member 元素,来保证该 member 在正确的位置上。