文章目录
- 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 在正确的位置上。