文章目录
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 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
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 在正确的位置上。