redis的常用指令及操作之一
Posted consola
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis的常用指令及操作之一相关的知识,希望对你有一定的参考价值。
一、 Redis中常用的与数据库有关的指令
说明 : 使用redis的默认配置器动redis服务后,默认会存在16个库,编号从0-15
可以使用select 库的编号 来选择一个redis的库
- 清空当前的库 FLUSHDB
- 清空全部的库 FLUSHALL
- 1. DEL
二、 Redis中常用的与key相关的指令
语法 : DEL key [key ...]
作用 : 删除给定的一个或多个key 。不存在的key 会被忽略。
可用版本: >= 1.0.0
时间复杂度:
O(N),N 为被删除的key 的数量。
删除单个字符串类型的key ,时间复杂度为O(1)。
删除单个列表、集合、有序集合或哈希表类型的key ,时间复杂度为O(M),M为以上数据结构内的元素数量。
返回值: 被删除key 的数量。
- 2. EXISTS
语法: EXISTS key
作用: 检查给定key 是否存在。
可用版本: >= 1.0.0
时间复杂度: O(1)
返回值: 若key 存在,返回1 ,否则返回0 。
- 3. EXPIRE
语法: EXPIRE key seconds
作用: 为给定key 设置生存时间,当key 过期时(生存时间为0 ),它会被自动删除。
在Redis 中,带有生存时间的key 被称为『易失的』(volatile)。生存时间可以通过使用DEL 命令来删除整个key 来移除,或者被SET 和GETSET 命令覆写(overwrite),
这意味着,如果一个命令只是修改(alter) 一个带生存时间的key 的值而不是用一个新的key 值来代替(replace) 它的话,那么生存时间不会被改变。
比如说,对一个key 执行INCR 命令,对一个列表进行LPUSH 命令,或者对一个哈希表执行HSET 命令,这类操作都不会修改key 本身的生存时间。
另一方面,如果使用RENAME 对一个key 进行改名,那么改名后的key 的生存时间和改名前一样。RENAME 命令的另一种可能是,尝试将一个带生存时间的key 改名成另一个带生存时间的another_key这时旧的another_key (以及它的生存时间) 会被删除,然后旧的key 会改名为another_key ,因此,新的another_key 的生存时间也和原本的key 一样。使用PERSIST 命令可以在不删除key 的情况下,移除key 的生存时间,让key 重新成为一个『持久的』(persistent) key 。更新生存时间可以对一个已经带有生存时间的key 执行EXPIRE 命令,新指定的生存时间会取代旧的生存时间。过期时间的精确度在Redis 2.4 版本中,过期时间的延迟在1 秒钟之内——也即是,就算key 已经过期,但它还是可能在过期之后一秒钟之内被访问到,而在新的Redis 2.6 版本中,延迟被降低到1 毫秒之内。Redis 2.1.3 之前的不同之处
在Redis 2.1.3 之前的版本中,修改一个带有生存时间的key 会导致整个key 被删除,这一行为是受当时复制(replication) 层的限制而作出的,现在这一限制已经被修复。
可用版本: >= 1.0.0
时间复杂度: O(1)
返回值:设置成功返回1 。
- 4. KEYS
语法 : KEYS pattern
作用 : 查找所有符合给定模式pattern 的key 。
KEYS * 匹配数据库中所有key 。
KEYS h?llo 匹配hello ,hallo 和hxllo 等。
KEYS h*llo 匹配hllo 和heeeeello 等。
KEYS h[ae]llo 匹配hello 和hallo ,但不匹配hillo 。
特殊符号用 隔开
注意: KEYS 的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的key ,你最好还是用Redis 的集合结构(set) 来代替。
可用版本: >= 1.0.0
时间复杂度: O(N),N 为数据库中key 的数量。
返回值: 符合给定模式的key 列表。
- 5. MOVE
语法 : MOVE key db
作用 : 将当前数据库的key 移动到给定的数据库db 当中。
如果当前数据库(源数据库) 和给定数据库(目标数据库) 有相同名字的给定key ,或者key 不存在于当前数据库,那么MOVE 没有任何效果。因此,也可以利用这一特性,将MOVE 当作锁(locking) 原语(primitive)。
可用版本: >= 1.0.0
时间复杂度: O(1)
返回值: 移动成功返回1 ,失败则返回0 。
- 6. PEXPIRE
语法 : PEXPIRE key milliseconds
作用 : 这个命令和EXPIRE 命令的作用类似,但是它以毫秒为单位设置key 的生存时间,而不像EXPIRE 命令那样,以秒为单位。
可用版本: >= 2.6.0
时间复杂度: O(1)
返回值:设置成功,返回1 key 不存在或设置失败,返回0
- 7. TTL
语法 : TTL key
作用 : 以秒为单位,返回给定key 的剩余生存时间(TTL, time to live)。
可用版本: >= 1.0.0
时间复杂度: O(1)
返回值:
当key 不存在时,返回-2 。
当key 存在但没有设置剩余生存时间时,返回-1 。
否则,以秒为单位,返回key 的剩余生存时间。
Note : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1 。
- 8. PTTL
语法 : PTTL key
作用 : 这个命令类似于TTL 命令,但它以毫秒为单位返回key 的剩余生存时间,而不是像TTL 命令那样,以秒为单位。
可用版本: >= 2.6.0
复杂度: O(1)
返回值: 当key 不存在时,返回-2 。当key 存在但没有设置剩余生存时间时,返回-1 。
否则,以毫秒为单位,返回key 的剩余生存时间。
注意 : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1 。
- 9. RANDOMKEY
语法 : RANDOMKEY
作用 : 从当前数据库中随机返回(不删除) 一个key 。
可用版本: >= 1.0.0
时间复杂度: O(1)
返回值:当数据库不为空时,返回一个key 。当数据库为空时,返回nil 。
- 10. RENAME
语法 : RENAME key newkey
作用 : 将key 改名为newkey 。当key 和newkey 相同,或者key 不存在时,返回一个错误。当newkey 已经存在时,RENAME 命令将覆盖旧值。
可用版本: >= 1.0.0
时间复杂度: O(1)
返回值: 改名成功时提示OK ,失败时候返回一个错误。
- 11. TYPE
语法 : TYPE key
作用 : 返回key 所储存的值的类型。
可用版本: >= 1.0.0
时间复杂度: O(1)
返回值:
none (key 不存在)
string (字符串)
list (列表)
set (集合)
zset (有序集)
hash (哈希表)
三、 Redis的String类型的操作
命令 |
说明 |
set |
设置一个key/value |
get |
根据key获得对应的value |
mset |
一次设置多个key value |
mget |
一次获得多个key的value |
getset |
获得原始key的值,同时设置新值 |
strlen |
获得对应key存储value的长度 |
append |
为对应key的value追加内容 |
getrange |
截取value的内容 |
setex |
设置一个key存活的有效期(秒) |
psetex |
设置一个key存活的有效期(豪秒) |
setnx |
存在不做任何操作,不存在添加 |
msetnx |
可以同时设置多个key,只要有一个存在都不保存 |
decr (不存在则创建) |
进行数值类型的-1操作 |
Decrby (不存在则创建) |
根据提供的数据进行减法操作 |
Incr (不存在则创建) |
进行数值类型的+1操作 |
incrby (不存在则创建) |
根据提供的数据进行加法操作 |
Incrbyfloat (保留17位) |
根据提供的数据加入浮点数 |
四、 Redis的List类型的操作
- 1. 图示
- 2. 命令
命令 |
说明 |
lpush |
将某个值加入到一个key列表头部 |
lpushx |
同lpush,但是必须要保证这个key存在 |
rpush |
将某个值加入到一个key列表末尾 |
rpushx |
同rpush,但是必须要保证这个key存在 |
lpop |
返回和移除列表的第一个元素 |
rpop |
返回和移除列表的最后一个元素 |
lrange |
获取某一个下标区间内的元素 |
llen |
获取列表元素个数 |
lset |
设置某一个指定索引的值(索引必须存在) |
lindex |
获取某一个指定索引位置的元素 |
lrem |
删除重复元素 |
ltrim |
保留列表中特定区间内的元素 |
linsert |
在某一个元素之前,之后插入新元素 |
五、 Redis的SET类型的操作
- 1. 图示
- 2. 命令
命令 |
说明 |
sadd |
为集合添加元素 |
smembers |
显示集合中所有元素 无序 |
scard |
返回集合中元素的个数 |
spop |
随机删除一个元素 |
smove |
从一个集合中向另一个集合移动元素 |
srem |
从集合中删除一个元素 |
sismember |
判断一个集合中是否含有这个元素 |
srandmember |
随机返回元素 |
sdiff |
筛选出第一个集合中其它集合含有的相同元素,保留剩下的元素 |
sinter |
求交集(同时拥有的元素) |
sunion |
求并集(和) |
六、 Redis的ZSET类型的操作
- 1. 图示
- 2. 命令
命令 |
说明 |
zadd |
添加一个有序集合元素 |
zcard |
返回集合的元素个数 |
zrange |
返回一个范围内的元素 |
zrangebyscore |
按照分数查找一个范围内的元素 |
zrank |
返回排名 |
zrevrank |
倒序排名 |
zscore |
显示某一个元素的分数 |
zrem |
移除某一个元素 |
zincrby |
给某个特定元素加分 |
七、 Redis的HASH类型的操作
- 1. 图示
- 2. 命令
命令 |
说明 |
hset |
设置一个key/value对 |
hget |
获得一个key对应的value |
hgetall |
获得所有的key/value对 |
hdel |
删除某一个key/value对 |
hexists |
判断一个key是否存在 |
hkeys |
获得所有的key |
hvals |
获得所有的value |
hmset |
设置多个key/value |
hmget |
获得多个key的value |
hsetnx |
设置一个不存在的key的值 |
hincrby |
为value进行加法运算 |
hincrbyfloat |
为value加入浮点值 |
以上是关于redis的常用指令及操作之一的主要内容,如果未能解决你的问题,请参考以下文章