redis的常用指令及操作之一

Posted consola

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis的常用指令及操作之一相关的知识,希望对你有一定的参考价值。

一、      Redis中常用的与数据库有关的指令

说明 :  使用redis的默认配置器动redis服务后,默认会存在16个库,编号从0-15

可以使用select 库的编号 来选择一个redis的库

  1. 清空当前的库   FLUSHDB
  2. 清空全部的库   FLUSHALL
  3. 1.        DEL

二、      Redis中常用的与key相关的指令

语法 :  DEL key [key ...]

作用 :  删除给定的一个或多个key 。不存在的key 会被忽略。

可用版本: >= 1.0.0

时间复杂度:

O(N),N 为被删除的key 的数量。

删除单个字符串类型的key ,时间复杂度为O(1)。

删除单个列表、集合、有序集合或哈希表类型的key ,时间复杂度为O(M),M为以上数据结构内的元素数量。

返回值: 被删除key 的数量。

 

  1. 2.        EXISTS

语法:  EXISTS key

作用:  检查给定key 是否存在。

可用版本: >= 1.0.0

时间复杂度: O(1)

返回值: 若key 存在,返回1 ,否则返回0 。

 

  1. 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 。

 

 

  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 列表。

 

  1. 5.        MOVE

语法 :  MOVE key db

作用 :  将当前数据库的key 移动到给定的数据库db 当中。

如果当前数据库(源数据库) 和给定数据库(目标数据库) 有相同名字的给定key ,或者key 不存在于当前数据库,那么MOVE 没有任何效果。因此,也可以利用这一特性,将MOVE 当作锁(locking) 原语(primitive)。

可用版本: >= 1.0.0

时间复杂度: O(1)

返回值: 移动成功返回1 ,失败则返回0 。

 

  1. 6.        PEXPIRE

语法 :  PEXPIRE key milliseconds

作用 :  这个命令和EXPIRE 命令的作用类似,但是它以毫秒为单位设置key 的生存时间,而不像EXPIRE 命令那样,以秒为单位。

可用版本: >= 2.6.0

时间复杂度: O(1)

返回值:设置成功,返回1  key 不存在或设置失败,返回0

 

  1. 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 。

 

  1. 8.        PTTL

语法 :  PTTL key

作用 :  这个命令类似于TTL 命令,但它以毫秒为单位返回key 的剩余生存时间,而不是像TTL 命令那样,以秒为单位。

可用版本: >= 2.6.0

复杂度: O(1)

返回值: 当key 不存在时,返回-2 。当key 存在但没有设置剩余生存时间时,返回-1 。

否则,以毫秒为单位,返回key 的剩余生存时间。

注意 : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1 。

 

  1. 9.        RANDOMKEY

语法 :  RANDOMKEY

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

可用版本: >= 1.0.0

时间复杂度: O(1)

返回值:当数据库不为空时,返回一个key 。当数据库为空时,返回nil 。

 

  1. 10.     RENAME

语法 :  RENAME key newkey

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

可用版本: >= 1.0.0

时间复杂度: O(1)

返回值: 改名成功时提示OK ,失败时候返回一个错误。

 

  1. 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. 1.        图示

 

  1. 2.        命令

命令

说明

lpush

将某个值加入到一个key列表头部

lpushx

同lpush,但是必须要保证这个key存在

rpush

将某个值加入到一个key列表末尾

rpushx

同rpush,但是必须要保证这个key存在

lpop

返回和移除列表的第一个元素

rpop

返回和移除列表的最后一个元素

lrange

获取某一个下标区间内的元素

llen

获取列表元素个数

lset

设置某一个指定索引的值(索引必须存在)

lindex

获取某一个指定索引位置的元素

lrem

删除重复元素

ltrim

保留列表中特定区间内的元素

linsert

在某一个元素之前,之后插入新元素

 


五、      Redis的SET类型的操作

  1. 1.        图示

 

  1. 2.        命令

命令

说明

sadd

为集合添加元素

smembers

显示集合中所有元素 无序

scard

返回集合中元素的个数

spop

随机删除一个元素

smove

从一个集合中向另一个集合移动元素

srem

从集合中删除一个元素

sismember

判断一个集合中是否含有这个元素

srandmember

随机返回元素

sdiff

筛选出第一个集合中其它集合含有的相同元素,保留剩下的元素

sinter

求交集(同时拥有的元素)

sunion

求并集(和)

 


六、      Redis的ZSET类型的操作

  1. 1.        图示

 

  1. 2.        命令

命令

说明

zadd

添加一个有序集合元素

zcard

返回集合的元素个数

zrange

返回一个范围内的元素

zrangebyscore

按照分数查找一个范围内的元素

zrank

返回排名

zrevrank

倒序排名

zscore

显示某一个元素的分数

zrem

移除某一个元素

zincrby

给某个特定元素加分

 


七、      Redis的HASH类型的操作

  1. 1.        图示

 

  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的常用指令及操作之一的主要内容,如果未能解决你的问题,请参考以下文章

Redis集合的常用操作指令

Redis远程控制,及常用指令

Redis数据类型:Sorted Sets操作指令

Redis -- 数据库常用命令大全

Linux常用指令及操作

redis五种数据类型以及其常用指令