1. key键位命令
命令 | 命令模版 | 描述 | 示例 |
---|---|---|---|
DEL | DEL key | 删除指定的 key | DEL mykey |
DUMP | DUMP key | 序列化给定 key,并返回被序列化的值 | DUMP mykey |
EXISTS | EXISTS key | 检查给定 key 是否存在 | EXISTS mykey |
EXPIRE | EXPIRE key seconds | 为 key 设置过期时间(秒) | EXPIRE mykey 60 |
EXPIREAT | EXPIREAT | key timestamp 以 UNIX 时间戳为单位设置 key 的过期时间 | EXPIREAT mykey 1672531199 |
KEYS | KEYS pattern | 查找匹配给定模式的所有 key | KEYS user* |
MOVE | MOVE key db | 将 key 移动到另一个数据库 | MOVE mykey 1 |
PERSIST | PERSIST key | 移除 key 的过期时间,令其持久存在 | PERSIST mykey |
PEXPIRE | PEXPIRE key milliseconds | 设置 key 的过期时间(毫秒) | PEXPIRE mykey 60000 |
PEXPIREAT | PEXPIREAT key milliseconds-timestamp | 设置毫秒级的 UNIX 时间戳作为 key 的过期时间 | PEXPIREAT mykey 1672531199123 |
PTTL | PTTL key | 以毫秒为单位返回 key 的剩余存活时间 | PTTL mykey |
RENAME | RENAME key newkey | 将 key 重命名为 newkey | RENAME mykey newkey |
RENAMENX | RENAMENX key newkey | 当且仅当 newkey 不存在时,将 key 重命名为 newkey | RENAMENX mykey newkey |
SORT | SORT key [options] | 对 key 进行排序,返回或存储排序后的结果 | SORT mylist |
TTL | TTL key | 以秒为单位返回 key 的剩余存活时间 | TTL mykey |
TYPE | TYPE key | 返回 key 所存储的值的类型 | TYPE mykey |
UNLINK | UNLINK key | 异步删除 key,避免阻塞 Redis | UNLINK mykey |
SCAN | SCAN cursor [MATCH pattern] [COUNT count] | 增量迭代数据库中的 key | SCAN 0 MATCH user* COUNT 100 |
测试连接性
127.0.0.1:6379> ping
PONG
获取所有的key值
127.0.0.1:6379> keys *
1) "xxxx"
获取所有的键值
127.0.0.1:6379> dbsize
(integer) 180
部分截图如下:
查询键是否存在:exists key [key ...]
,可以查询多个
127.0.0.1:6379> exists xxx yyy
(integer) 2
删除键:del key [key ...]
,可以删除多个
127.0.0.1:6379> del xxx yyy
(integer) 2
查询键类型:type key
127.0.0.1:6379> type xxx
string
查询key的生命周期(秒)
# 秒语法:ttl key
# 毫秒语法:pttl key
#-1:永远不过期
127.0.0.1:6379> ttl xxx
(integer) -1
移动键:move key db
127.0.0.1:6379> move xxx 2
(integer) 1
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> keys *
1) "xxx"
部分截图如下:
-1 为过期时间,还可以通过expire设置一个过期时间
127.0.0.1:6379> expire xxx 60
(integer) 1
127.0.0.1:6379> ttl xxx
(integer) 57
设置永不过期:persist key
127.0.0.1:6379> persist xxx
(integer) 1
更改键名称:rename key newkey
127.0.0.1:6379> rename xxx yyy
OK
部分截图如下:
2. list列表命令
命令 | 命令模版 | 描述 | 示例 |
---|---|---|---|
LPUSH | LPUSH key value [value …] | 将一个或多个值插入到列表头部 | LPUSH mylist "a" "b" |
RPUSH | RPUSH key value [value …] | 将一个或多个值插入到列表尾部 | RPUSH mylist "a" "b" |
LPOP | LPOP key | 移除并返回列表的第一个元素 | LPOP mylist |
RPOP | RPOP key | 移除并返回列表的最后一个元素 | RPOP mylist |
LLEN | LLEN key | 获取列表的长度 | LLEN mylist |
LRANGE | LRANGE key start stop | 获取列表中指定范围的元素 | LRANGE mylist 0 -1 |
LINDEX | LINDEX key index | 获取列表中指定索引的元素 | LINDEX mylist 0 |
LSET | LSET key index value | 将列表中指定索引的元素设置为新的值 | LSET mylist 0 "newvalue" |
LREM | LREM key count value | 从列表中移除指定的元素,count 表示移除的数量 | LREM mylist 2 "a" |
LTRIM | LTRIM key start stop | 修剪列表,只保留指定范围内的元素 | LTRIM mylist 1 3 |
RPOPLPUSH | RPOPLPUSH source destination | 移除列表的最后一个元素并将其插入到另一个列表的头部 | RPOPLPUSH mylist myotherlist |
BLPOP | BLPOP key [key …] timeout | 阻塞弹出列表的第一个元素,若列表为空则等待直到超时或有新元素 | BLPOP mylist 0 |
BRPOP | BRPOP key [key …] timeout | 阻塞弹出列表的最后一个元素,若列表为空则等待直到超时或有新元素 | BRPOP mylist 0 |
BRPOPLPUSH | BRPOPLPUSH source destination timeout | 阻塞移除列表的最后一个元素,并将其插入到另一个列表头部 | BRPOPLPUSH mylist myotherlist 0 |
左端存值语法:lpush key value [value ...]
127.0.0.1:6379> lpush xx a b c
(integer) 3
右端存值语法:rpush key value [value ...]
127.0.0.1:6379> rpush yy a b c
(integer) 3
索引存值语法:lset key index value
127.0.0.1:6379> lset xx 2 d
OK
左端弹出语法:lpop key
右端弹出语法:rpop key
获取元素个数:llen key
获取列表元素:lrange key start stop
获取所有: lrange key 0 -1
右获取: lrange key -3 -1
索引获取语法:lindex key index
删除元素:lrem key count value
3. string字符串命令
命令 | 命令模版 | 描述 | 示例 |
---|---|---|---|
SET | SET key value [EX seconds] [PX milliseconds] | 设置指定 key 的值。可选参数可以指定过期时间(秒或毫秒) | SET mykey "Hello" |
GET | GET key | 获取指定 key 的值 | GET mykey |
GETSET | GETSET key value | 设置指定 key 的新值并返回旧值 | GETSET mykey "NewValue" |
MSET | MSET key value [key value …] | 一次设置多个 key-value 对 | MSET key1 "a" key2 "b" |
MGET | MGET key [key …] | 一次获取多个 key 的值 | MGET key1 key2 |
SETEX | SETEX key seconds value | 设置 key 的值及其过期时间(秒) | SETEX mykey 10 "Hello" |
SETNX | SETNX key value | 只有在 key 不存在时,才设置 key 的值 | SETNX mykey "Hello" |
INCR | INCR key | 将 key 的整数值加 1 | INCR mycounter |
INCRBY | INCRBY key increment | 将 key 的整数值加指定的增量 | INCRBY mycounter 5 |
DECR | DECR key | 将 key 的整数值减 1 | DECR mycounter |
DECRBY | DECRBY key decrement | 将 key 的整数值减指定的减量 | DECRBY mycounter 5 |
APPEND | APPEND key value | 将 value 追加到原 key 值的末尾 | APPEND mykey " World" |
STRLEN | STRLEN key | 返回 key 所存储的字符串值的长度 | STRLEN mykey |
SETRANGE | SETRANGE key offset value | 用指定的字符串覆盖 key 从偏移量开始的值 | SETRANGE mykey 6 "Redis" |
GETRANGE | GETRANGE key start end | 返回 key 中字符串值的子字符串,范围由 start 和 end 指定 | GETRANGE mykey 0 4 |
MSETNX | MSETNX key value [key value …] | 当所有给定 key 都不存在时,同时设置多个 key-value 对 | MSETNX key1 "a" key2 "b" |
存放键值:set key value [EX seconds] [PX milliseconds] [NX|XX]
nx:如果key不存在则建立,xx:如果key存在则修改其值,也可以直接使用setnx/setex命令
如果字符串中的值是数字类型的,可以使用incr命令每次递增,不是数字类型则报错:incr key
4. set集合命令
命令 | 命令模版 | 描述 | 示例 |
---|---|---|---|
SADD | SADD key member [member …] | 向集合中添加一个或多个成员 | SADD myset "apple" "banana" |
SCARD | SCARD key | 获取集合中成员的数量 | SCARD myset |
SDIFF | SDIFF key [key …] | 返回一个集合与其他集合的差集 | SDIFF myset1 myset2 |
SDIFFSTORE | SDIFFSTORE destination key [key …] | 将差集结果存储在指定的集合中 | SDIFFSTORE resultset myset1 myset2 |
SINTER | SINTER key [key …] | 返回集合的交集 | SINTER myset1 myset2 |
SINTERSTORE | SINTERSTORE destination key [key …] | 将交集结果存储在指定的集合中 | SINTERSTORE resultset myset1 myset2 |
SISMEMBER | SISMEMBER key member | 判断成员是否在集合中 | SISMEMBER myset "apple" |
SMEMBERS | SMEMBERS key | 返回集合中的所有成员 | SMEMBERS myset |
SMOVE | SMOVE source destination member | 将指定成员从一个集合移动到另一个集合 | SMOVE myset1 myset2 "apple" |
SPOP | SPOP key [count] | 随机移除并返回集合中的一个或多个成员 | SPOP myset 1 |
SRANDMEMBER | SRANDMEMBER key [count] | 随机返回集合中的一个或多个成员,但不移除 | SRANDMEMBER myset 2 |
SREM | SREM key member [member …] | 移除集合中的一个或多个成员 | SREM myset "apple" "banana" |
SUNION | SUNION key [key …] | 返回所有集合的并集 | SUNION myset1 myset2 |
SUNIONSTORE | SUNIONSTORE destination key [key …] | 将并集结果存储在指定的集合中 | SUNIONSTORE resultset myset1 myset2 |
示例如下:
存储值:sadd key member [member ...]
# 只存了2个
127.0.0.1:6379> sadd ma nong ma nong
(integer) 2
获取所有元素语法:smembers key
127.0.0.1:6379> smembers ma
1) "nong"
2) "ma"
部分截图如下:
随机获取:srandmember langs count
127.0.0.1:6379> srandmember ma 1
1) "nong"
判断集合是否存在元素:sismember key member
127.0.0.1:6379> sismember ma ma
(integer) 1
截图如下:
获取集合元素个数:scard key
127.0.0.1:6379> scard ma
(integer) 2
删除集合元素:srem key member [member ...]
127.0.0.1:6379> srem ma ma
(integer) 1
弹出元素:spop key [count]
127.0.0.1:6379> spop ma 1
1) "nong"
5. hash哈希
键值对集合,特别适合用于存储对象类型
常用命令:
hset key field value
给key集合中的filed键赋值valuehget key1 field
集合field取出valuehmset key1 field1 value1 field2 value2
批量设置hash的值hexists key1 field
查看哈希表key中,给定域field是否存在hkeys key
列出该hash集合的所有fieldhvals key
列出该hash集合的所有valuehincrby key field increment
为哈希表key中的域field的值加上增量1 -1hsetnx key field value
将哈希表key中的域field的值设置为value,当且仅当域field不存在
例如 hset user:1000 id 1
6. Zset有序集合
没有重复元素的字符串集合,按照相关的分数进行排名,排名从低到高,排名可重复
有序集合 zset 与普通集合 set 非常相似,是一个没有重复元素的字符串集合
常用命令:
zadd key score1 value1 score2 value2
将一个或多个member元素及其score值加入到有序key中zrange key start stop (withscores)
返回有序集key,下标在start与stop之间的元素,带withscores,可以让分数一起和值返回到结果集。zrangebyscore key min max(withscores)
返回有序集key,所有score值介于min和max之间(包括等于min或max)的成员。有序集成员按score的值递增次序排列zrevrangebyscore key max min (withscores)
同上,改为从大到小排列zincrby key increment value
为元素的score加上增量zrem key value
删除该集合下,指定值的元素zcount key min max
统计该集合,分数区间内的元素个数zrank key value
返回该值在集合中的排名,从0开始