`
bsr1983
  • 浏览: 1101317 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

reids学习笔记

 
阅读更多

xmind文件下载地址:https://github.com/bsr1983/note/blob/master/redis.xmind

key

 del

  DEL key [key ...]

  删除指定的一个或多个key。不存在的key会被忽略。

  被删除key的数量

 dump

  dump key

  序列化给定的key,并返回被序列化的值,使用RESTORE命令可以将这个值反序列化为Redis键。

  如果key不存在,那么返回nil,否则,返回序列化之后的值。

 exists

  exists key

  检查给定key是否存在

  若key存在,返回1,否则返回0

 expire

  expire key seconds

  为给定的key设置生存时间,当key过期时(生存时间为0),它会被自动删除。

  设置成功返回1。当key不存在或者不能为key设置生存时间时,返回0.

 expireat

  expireat key timestamp

  expireat的作用和expire类似,都用于为key设置生存时间。不同在于expireat命令接受的时间参数是UNIX时间戳(unix timestamp)。

  如果生存时间设置成功,返回1。当key不存在或没办法设置生存时间。

 keys

  keys pattern

  查找所有符合盖顶模式pattern的key。特殊符号用\隔开。

  符合给定模式的key列表

 magrate

  MIGRATE host port key destination-db timeout [COPY] [REPLACE]

  将key原子性地从当前实例传送到目标实例的指定数据库上,一旦传送成功,key保证会出现在目标实例上,而当前实例上的key会被删除。

  迁移成功时返回OK,否则返回相应的错误。

 move

  MOVE key db

  将当前数据库的key移动到给定的数据库db当中。如果当前的数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定key,或者key不存在于当前数据库,那么MOVE没有任何效果。

  移动成功返回1,失败则返回0.

 object

  OBJECT sucommand [arguments[arguments]]

  OBJECT 命令允许从内部查看给定key的Redis对象,它通常用在除错(debugging)或者了解为了节省空间而对key使用特殊编码的情况。当将Redis用作缓存程序时,也可以通过OBJECT命令中的信息,决定key的驱逐策略

  返回值:REFCOUNT和IDLETIME返回数字。 ENCODING返回响应的编码类型。

 persist

  PERSIST key

  移除给定key的生存时间,将这个key从“易失的”(带生存时间的key)转换成“持久的”(不带生存时间、永不过期的key)。

  当生产时间移除成功时,返回1 如果key不存在或key没有设置生存时间,返回0

 pexpire

  PERXPIRE key milliseconds

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

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

 pexpireat

  PEXPIREAT key milliseconds-timestamp

  这个命令和EXPIREAT命令类似,但它以毫秒为单位设置key的过期unix时间戳,而不是像EXPIPREAT那样,以秒为单位。

  如果生存时间设置成功,返回1 当key不存在或没办法设置生存时间时,返回0

 pttl

  PTTl key

  类似于TTL命令,以毫秒为单位返回key的剩余生存时间

  返回值:当key不存在时,返回-2 当key存在但没有设置生存时间时,返回-1 否则,以毫秒为单位,返回key的剩余生存时间

 randomkey

  RANDOMKEY

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

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

 rename

  RENAME key newkey

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

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

 renamenx

  RENAMENX key newkey

  当且仅当newkey不存在时,将key改名为newkey;当key不存在时,返回一个错误

  修改成功时,返回1 如果newkey已经存在,返回0

 restore

  RESTORE key ttl serialized-value [REPLACE]

  反序列化给定的序列化值,并将它和给定的key关联。参数ttl以毫秒为单位为key设置生存时间;如果ttl为0,那么不设置生存时间。RESTORE在执行反序列化之前会先对序列化值的RDB版本和数据校验和进行检查,如果RDB版本不相同或者数据不完整的话,那么RESTORE会拒绝进行反序列化,并返回一个错误。

  如果反序列化成功返回OK,否则返回一个错误

 sort

  SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern...]] [ASC|DESC] [ALPHA] [STORE destination]

  返回或保存给定列表、集合、有序集合key中经过排序的元素。排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较。

  没有是用STORE参数,返回列表形式的排序结果。 使用STORE参数,返回排序结果的元素数量。

 ttl

  TTL key

  以秒为单位,返回给定key的剩余生存时间(TTL,time to live)

  当key不存在时,返回-2 当key存在但没有生存时间时,返回-1 否则,以秒为单位,返回key的剩余生存时间。

 type

  TYPE key

  返回key所存储的值的类型

  none(key不存在) string(字符串) list(列表) set(集合) zset(有序集) hash(哈希表)

 scan

  SCAN cursor [MATCH pattern] [COUNT count]

  SCAN命令及其相关的SSCAN命令、HSCAN命令和ZSCAN命令都用于增量地迭代(incrementally iterate)一集元素: SCAN命令用于迭代当前数据库中的数据库键 SSCAN命令用于迭代集合键中的元素 HSCAN命令用于迭代哈希键中的键值对 ZSCAN命令用于迭代有序集合中的元素(包括元素成员和元素分值)

  SCAN命令的回复是一个包含两个元素的数组,第一个数组元素是用于进行下一次迭代的新游标,而第二个数组元素则是一个数组,这个数组中包含了所有被迭代的元素。

String

 append

  APPEND key value

  如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来值得末尾 如果key不存在,APPEND就简单地将给定key设为value,就像执行SET key value一样。

  追加value之后,key中字符串的长度

 bitcount

  BITCOUNT key [start] [end]

  计算给定字符串中,被设置为1的比特位的数量。 一般情况下,给定的整个字符串都会被进行计数,通过指定额外的start或end参数,可以让计数只在特定的位上进行。

  被设置为1的位的数量

 bitop

  BITOP operation destkey key [key ...]

  对一个或多个保存二进制的字符串key进行位元操作,并将结果保存到destkey上。 operation 可以是AND、OR、NOT、XOR这四种操作中的任意一种。 当BITOP处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作0。 空的key也被看作是包含0的字符串序列

  保存到destkey的字符串的长度,和输入key中最长的字符串长度相等。

 decr

  DECR key

  将key中储存的数字值减一。如果key不存在,那么key会被初始化为0,然后再执行DECR操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在64位(bit)有符号数字表示之内。

  执行DECR命令之后key的值。

 decrby

  DECRBY key decrement

  将key所储存的值减去减量decrment

  减去decrment之后,key的值

 get

  GET key

  返回key所关联的字符串值。如果key不存在那么返回特殊值nil。 如果key储存的值不是字符串类型,返回一个错误,因为GET只能用于处理字符串值。

  当key不存在时,返回nil,否则,返回key的值。 如果key不是字符串类型,那么返回一个错误。

 getbit

  GETBIT key offset

  对key所储存的字符串值,获取指定偏移量上的位(bit)。 当offset比字符串值的长度达,或者key不存在时,返回0。

  字符串值指定偏移量上的位(bit)

 getrange

  GETRANGE key start end

  返回key中字符串值的字字符串,字符串的截取范围由start和end两个偏移量决定(包括start和end在内)。 负数偏移量表示从字符串最后开始计数,-1表示最后一个字符,-2表示倒数第二个,以此类推。GETRANGE通过保证子字符串的值域(range)不超过实际字符串的值域来处理超出范围的值域请求。

  截取取出的子字符串。

 getset

  GETSET key value

  将给定的key的值设为value,并返回key的旧值。

  返回给定key的旧值。 当key没有旧值,也就是说当key不存在时,返回nil 当key存在但不是字符串类型时,返回一个错误

 incr

  INCR key

  将key中存储的数字值增一 如果key不存在,那么key的值会先被初始化为0,然后再执行INCR操作。

  执行INCR命令之后key的值

 incrby

  incrby key increment

  将key所储存的值加上增量increment

  加上increment之后,key的值。

 incrbyfloat

  INCRBYFLOAT key inscrement

  为key中所储存的值加上浮点数增量increment

  执行命令后的key的值

 mget

  MGET key [key ...]

  返回所有(一个或多个)给定key的值。如果给定的key里面,有某个key不存在,那么这个key返回特殊值nil。因此,该命令永不失败。

  一个包含所有给定key值得列表

 mset

  mset key value [key value ...]

  同时设置一个或多个key-value对。如果某个给定key已经存在,那么MSET会用新值覆盖原来的旧值,如果这不是你所希望的效果,可以使用MSETNX。 MSET是一个原子性(atomic)操作,所有给定key都会在同一时间内被设置,某些给定key被更新而另一些给定key没有改变的情况不可能发生

  总是返回OK

 msetnx

 psetex

  PSETEX key millisecnods value

  这个命令和setex命令相似,但它以毫秒为单位设置key的生存时间,而不是像SETEX命令那样,以秒为单位

  设置成功时返回OK

 set

  SET key value [EX seconds] [PX millisends] [NX|XX]

  将字符串值value关联到key 如果key已经持有其他值,SET就要覆写旧值,无视类型。 队友某个原本带有生存时间(TTL)的键来说,当SET命令成功在这个键上执行时,这个键原有的TTL将被清除。 从Redis2.6.12版本开始,SET命令的行为可以通过一系列参数来修改: EX second:设置键的过期时间为second秒,SET key value EX second效果等同于SETEX key second value。 PX millisecond:设置键过期的时间为millisecond毫秒。SET key value PX millisecond效果等同于PSETEX key millisecond value. NX:只在键不存在时,才对键进行设置操作。SET key value NX 效果等同于SETNX key value XX:只有键已存在时,才对键进行设置操作。

  在Redis 2.6.12版本以前,SET命令总是返回OK 从Redis 2.6.12版本开始,SET在设置操作成功完成时,才返回OK 如果设置了NX或者XX,但因为条件没达到二造成设置操作未执行,那么命令返回空批量回复(NULL Bulk Reply)

 setbit

  SETBIT key offset value

  对key所存储的字符串值,设置或清除指定偏移量上的位(bit)。 位的设置或清除取决于value参数,可以是0也可以是1 当key不存在时,自动生成一个新的字符串值。

  指定偏移量原来存储的位

 setex

  SETEX key seconds value

  将值value关联到key,并将key的生存时间设为seconds(以秒为单位) 如果key已经存在,SETEX命令将覆写旧值。 SETEX是一个原子性(atomic)操作,关联值和设置生存时间两个动作会在同一时间内完成,该命令在Redis用作缓存时,非常实用

  设置成功时返回OK 当seconds参数不合法时,返回一个错误

 setnx

  SETNX key value

  将key的值设为value,当且仅当key不存在。 若给定的key已经存在,则SETNX不做任何动作。

  设置成功,返回1 设置失败,返回0

 setrange

  SETRANGE key offset value

  用value参数覆写(overwrite)给定key所存储的字符串值,从偏移量offset开始 不存在的key当做空白字符串处理 SETRANGE命令会确保字符串足够长以便将value设置在制定的偏移量上,如果给定的key原来存储的字符串长度比偏移量小,那么原字符和偏移量之间的空白将用零字节来填充。

  被SETRANGE修改之后,字符串的长度

 strlen

  STRLEN key

  返回key所存储的字符串值得长度。 当key存储的不是字符串值时,返回一个错误。

  字符串值的长度。 当key不存在时,返回0

Hash

 hdel

  HDEL key field[field ...]

  删除哈希表key中的一个或多个指定域,不存在的域将被忽略

  被成功移除的域的数量,不包括被忽略的域

 hexists

  HEXISTS key field

  查看哈希表key中,给定域field是否存在

  如果哈希表含有给定域,返回1 如果哈希表不含有给定域,或key不存在,返回0

 hget

  HGET key field

  返回哈希表key中给定域field的值。

  给定域的值。 当给定域不存在或是给定key不存在时,返回nil。

 hgetall

  HGETALL key

  返回哈希表key中,所有的域和值

  以列表形式返回哈希表的域和域的值。若key不存在,返回空列表

 hincrby

  HINCRBY key field increment

  为哈希表key中的域field的值加上增量increment。增量也可以为负数,相当于对给定域进行减法操作。如果key不存在,一个新的哈希表被创建并执行HINCRBY命令。如果域field不存在,那么在执行命令前,域的值被初始化为0。

  执行HINCRBY命令之后,哈希表key中域field的值。

 hincrbyfloat

  HINCRBYFLOAT key field increment

  为哈希表key中的域field加上浮点数增量increment

  执行加法操作之后field域的值。

 hkeys

  HKEYS key

  返回哈希表key中的所有域

  一个包含哈希表中所有域的表。 当key不存在时,返回一个空表

 hlen

  HLEN key

  返回哈希表key中域的数量

  哈希表中域的数量。 当key不存在时,返回0

 hmget

  HMGET key field [field...]

  返回哈希表key中,一个或多个给定域的值。 如果给定的域不存在于哈希表,那么返回一个nil值 因为不存在的key被当作一个空哈希表来处理,所以对一个不存在的key进行HMGET操作将返回一个只带有nil值的表

  一个包含多个给定域的关联值得表,表值的排列顺序和给定域参数的请求顺序一样。

 hmset

  HMSET key field value [field value ...]

  同时将多个field-value对设置到哈希表key中。此命令会覆盖哈希表中已存在的域。 如果key不存在,一个空哈希表被创建并执行HMSET操作。

  如果命令执行成功,返回OK。 当key不是哈希表类型时,返回一个错误。

 hset

  HSET key field value

  将哈希表key中的域field的值设为value。 如果key不存在,一个新的哈希表被创建并执行HSET操作。 如果域field已经存在于哈希表中,旧值将被覆盖。

  如果field是哈希表中的一个新建域,并且值设置成功,返回1. 如果哈希表中域field已经存在且旧值已被新值覆盖,返回0.

 hsetnx

  HSETNX key field value

  将哈希表key中的域field的值设置为value,当前仅当域field不存在。 如域field已经存在,该操作无效。 如果key不存在,一个新哈希表被创建并执行HSETNX命令。

  设置成功,返回1 如果给定域已经存在且没有操作被执行,返回0.

 hvals

  HVALS key

  返回哈希表key中所有域的值。

  一个包含哈希表中所有值的表。 当key不存在时,返回一个空表。

 hscan

  HSCAN key cursor [MATCH pattern] [COUNT count]

List

 blpop

  BLPOP key [key ...] timeout

  BLPOP是列表的阻塞式(blocking)弹出原语。 它是LPOP命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被BLPOP命令阻塞,直到等待超时或发现可弹出元素为止。 当给定多个key参数时,按参数key的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。 阻塞行为 如果所有给定key都不存在或包含空列表,那么BLPOP命令将阻塞连接,直到等待超时,或有另一个客户端对给定key的任意一个执行LPUSH或RPUSH命令为止。 超时参数timeout接受一个以秒为单位的数字作为值。超时参数设为0表示阻塞时间可以无限期延长。

  如果列表为空,返回一个nil 否则,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的key,第二个元素是被弹出元素的值。

 brpop

  BRPOP key [key ...] timeout

  BRPOP是列表的阻塞式(blocking)弹出原语。 它是RPOP命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被BRPOP命令阻塞,直到等待超时或发现可弹出元素为止。 当给定多个key参数时,按参数key的先后顺序依次检查各个列表,弹出第一个非空列表的尾部元素。

  假如指定时间内没有任何元素被弹出,则返回一个nil和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的key,第二个元素是被弹出元素的值。

 brpoplpush

  BRPOPLPUSH source destination timeout

  BRPOPLPUSH 是RPOPLPUSH的阻塞版本,当给定列表source不为空时,BRPOPLPUSH的表现和RPOPLPUSH一样。 当列表source为空时,BRPOPLPUSH命令将阻塞连接,直到等待超时,或有另一个客户端对source执行LPUSH或RPUSH命令为止。

  假如在指定时间内没有任何元素被弹出,则返回一个nil和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长。

 lindex

  LINDEX key index

  返回列表key中,下标为index的元素。 下标(index)参数start和stop都以0为底,也就是说,以0表示列表的第一个元素,以1表示列表的第二个元素,以此类推。也可以使用负数下标,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。 如果key不是列表类型,返回一个错误。

  列表中下标为index的元素。 如果index参数的值不在列表的区间范围内(out of range),返回nil

 linsert

  LINSERT key BEFORE|AFTER pivot value

  将值value插入列表key当中,位于值pivot之前或之后 当pivot不存在于列表key时,不执行任何操作。 当key不存在时,key被视为空列表,不执行任何操作。 如果key不是列表类型,返回一个错误。

  如果命令执行成功,返回插入操作完成之后,列表的长度。 如果没有找到pivot,返回-1 如果key不存在或为空列表,返回0

 llen

  LLEN key

  返回列表key的长度。 如果key不存在,则key被解释为一个空列表,返回0 如果key不是列表类型,返回一个错误。

  列表key的长度

 lpop

  LPOP key

  移除并返回列表key的头元素

  列表的头元素 当key不存在时,返回nil

 lpush

  LPUSH key value [value ...]

  将一个或多个值value插入到列表key的表头 如果有多个value值,那么各个value值按从左到右的顺序依次插入到表头; 如果key不存在,一个空列表会被创建并执行LPUSH操作。 当key存在但不是列表类型时,返回一个错误。

  执行LPUSH命令后,列表的长度

 lpushx

  LPUSHX key value

  将值value插入列表key的表头,当且仅当key存在并且是一个列表。 和LPUSH命令相反,当key不存在时,LPUSHX命令什么也不做。

  LPUSHX命令执行后,表的长度

 lrange

  LRANGE key start stop

  返回列表key中指定区间内的元素,区间以偏移量start和stop指定。 下标(index)参数start和stop都以0为底,也就是说,以0表示列表的第一个元素,以1表示列表的第二个元素,以此类推。 如果start下标比列表的最大下标end还要大,那么LRANGE返回一个空列表。 如果stop下标比end下标还要大,Redis将stop的值设置为end。

  一个列表,包含指定区间内的元素。

 lrem

  LREM key count value

  根据参数count的值,移除列表中与参数value相等的元素。 count>0:从表头开始向表尾搜索,移除与value相等的元素,数量为count。 count<0:从表尾开始向表头搜索,移除与value相等的元素,数量为count的绝对值。 count=0:移除表中所有与value相等的值。

  被移除元素的数量。 因为不存在的key被视作空表(empty list),所以当key不存在时,LREM命令总是返回0.

 lset

  LSET key index value

  将列表key下标为index的元素的值设置为value. 当index参数超出范围,或对一个空列表(key不存在)进行LSET时,返回一个错误。

  操作成功返回ok,否则返回错误信息。

 ltrim

  LTRIM key start stop

  对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间内的元素都将被删除。 当key不是列表类型时,返回一个错误。 超出范围的下标值不会引起错误。 如果start下标比列表的最大下标end(LLEN list 减去1)还要大,或者start>stop,LTRIM返回一个空列表。 如果stop下标比end下标还要大,Redis将stop的值设置为end。

  命令执行成功时,返回ok

 rpop

  RPOP key

  移除被返回列表key的尾元素

  列表的尾元素。 当key不存在时,返回nil

 rpoplpush

  RPOPLPUSH source destination

  命令RPOPLPUSH在一个原子时间内,执行以下两个动作: 将列表source中最后一个元素(尾元素)弹出,并返回给客户端。 将source弹出的元素插入到列表destination,作为destination列表的头元素。 如果source不存在,值nil被返回,并且不执行其他动作。 如果source和destination相同,则列表中的表尾元素被移动到表头,并返回该元素,可以把这种特殊情况视作列表的旋转(rotation)操作。

  被弹出的元素。

 rpush

  RPUSH key value[value ...]

  将一个或多个值value插入到列表key的表尾(最右边) 如果有多个value值,那么各个value值按从左到右的顺序依次插入表尾。 如果key不存在,一个空列表会被创建并执行RPUSH操作。 当key存在但不是列表类型时,返回一个错误。

  执行RPUSH操作后,表的长度。

 rpushx

  RPUSHX key value

  将值value插入到列表key的表尾,当且仅当key存在并且是一个列表。 和RPUSH命令相反,当key不存在时,RPUSHX命令什么也不做。

  RPUSHX命令执行后,表的长度

Set

 sadd

  SADD key member [member ...]

  将一个或多个member元素加入到集合key当中,已经存在于集合的member元素将被忽略。 假如key不存在,则创建一个只包含member元素作成员的集合。 当key不是集合类型时,返回一个错误。

  被添加到集合中的新元素的数量,不包括被忽略的元素。

 scard

  SCARD key

  返回集合key的基数(集合中元素的数量)

  集合的基数。 当key不存在时,返回0.

 sdiff

  SDIFF key [ key ...]

  返回一个集合的全部成员,该集合是所有给定集合之间的差集。 不存在的key被视为空集。

  一个包含差集成员的列表。

 sdiffstore

  SDIFFSTORE destination key [key ...]

  这个命令的作用和SDIFF类似,但它将结果保存到destination集合,而不是简单地返回结果集。 如果destination集合已经存在,则将其覆盖。 destination可以是key本身。

  结果集中的元素数量。

 sinter

  SINTER key [key ...]

  返回一个集合的全部成员,该集合是所有给定集合的交集。 不存在的key被视为空集。 当给定集合当中有一个空集时,结果也为空集。

  交集成员的列表

 sinterstore

  SINTERSTORE destination key [key ...]

  这个命令类似SINTER命令,但它将结果保存到destination集合,而不是简单地返回结果集。 如果destination集合已经存在,则将其覆盖。 destination可以是key本身。

  结果集中的成员数量。

 sismember

  SISMEMBER key member

  判断member原始是否集合key的成员。

  如果member元素是集合的成员,返回1. 如果member元素不是集合的成员,或key不存在,返回0.

 smembers

  SMEMBERS key

  返回集合key中的所有成员。 不存在的key被视为空集合。

  集合中的所有成员。

 smove

  SMOVE source destination member

  将member元素从source集合移动到destination集合。 SMOVE是原子性操作。如果source集合不存在或不包含指定的member元素,则SMOVE不执行任何操作,仅返回0。否则,member元素从source集合中被移除,并添加到destination集合中去。 当destination集合已经包含member元素时,SMOVE命令只是简单地将source集合中的member元素删除。 当source或destination不是集合类型时,返回一个错误。

  如果member元素被成功移除,返回1。 如果member元素不是source集合的成员,并且没有任何操作对destination集合执行,那么返回0.

 spop

  SPOP key

  移除并返回集合中的一个随机元素。 如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用SRANDMEMBER命令。

  被移除的随机元素。 当key不存在或key是空集时,返回nil。

 srandmember

  SRANDMEMBER key [count]

  如果命令执行时,只提供了key参数,那么返回集合中的一个随机元素。 从Redis2.6版本开始,SRANDMEMBER命令接受可选的count参数: 如果count为正数,且小于集合基数,那么命令返回一个包含count个元素的数组,数组的元素各不相同。如果count大于等于集合基数,那么返回整个集合。 如果count为负数,那么命令返回一个数组,数组中国的元素可能会重复出现多次,而数组的长度为count的绝对值。

  只提供key参数时,返回一个元素;如果集合为空,返回nil 如果提供了count参数,那么返回一个数组;如果集合为空,返回空数组。

 srem

  SREM key member [member ...]

  移除集合key中的一个或多个member元素,不存在的member元素会被忽略。 当key不是集合类型,返回一个错误。

  被成功移除的元素的数量,不包括被忽略的元素。

 sunion

  SUNION key [key ...]

  返回一个集合的全部成员,该集合是所有给定集合的并集。 不存在的key被视为空集。

  并集成员的列表。

 sunionstore

  SUNIONSTORE destination key [key ...]

  这个命令类似于SUNION命令,但它将结果保存到destination集合,而不是简单地返回结果集。 如果destination已经存在,则将其覆盖。destination可以是key本身。

  结果集中的元素数量。

 sscan

  SSCAN 可以 cursor [MATCH pattern] [COUNT count]

SortedSet

 zadd

  ZADD key score member [ [score member] [score member] ...]

  将一个或多个member元素及其score值加入到有序集key当中。 如果某个member已经是有序集的成员,那么更新这个member的score值,并通过重新插入这个member元素,来保证该member在正确的位置上。 score值可以是整数值或双精度浮点数。 如果key不存在,则创建一个空的有序集并执行ZADD操作。 当key存在但是不是有序集类型时,返回一个错误。

  被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员。

 zcard

  ZCARD key

  返回有序集key的基数。

  当key存在且是有序类型时,返回有序集的基数 当key不存在时,返回0.

 zcount

  ZCOUNT key min max

  返回有序集key中,score值在min和max之间(默认包括score值等于min或max)的成员数量。

  score值在min和max之间的成员数量。

 zincrby

  ZINCRBY key increment member

  为有序集key的成员member的score值加上增量increment。 当key不存在,或member不是key成员时,ZINCRBY key increment member等同于ZADD key increment member。 当key不是有序集类型时,返回一个错误。 score值可以是整数值或双精度浮点数。

  member成员的新score值,以字符串形式表示。

 zrange

  ZRANGE key start stop [WITHSCORES]

  返回有序集key中,指定区间内的成员。 其中成员的位置按score值递增(从小到大来排序)。 具有相同score值的成员按字典序(lexicographical order)来排列。 如果你需要成员按score值递减(从大到小)来排列,请使用ZREVEANGE命令。 超出范围的下标并不会引起错误。 比如说,当start的值比有序集的最大下标还要大,或是start>stop时,ZRANGE命令只是简单地返回一个空列表。另一方面,加入stop参数的值比有序集的最大下标还要大,那么Redis将stop当作最大下标来处理。 可以通过使用WITHSCORES选项,来让成员和它的score值一并返回,返回列表以value1,score1,...,valueN,scoreN的格式表示。客户端库可能会返回一些更复杂的数据类型,比如数组、元组等。

  指定区间内,带有score值(可选)的有序集成员的列表。

 zrangebyscore

  ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

  返回有序集key中,所有score值介于min和max之间(包括等于min或max)的成员。有序集成员按score值递增(从小到大)次序排列。 具有相同score值的成员按字典序(lexicographical order)来排列(该属性是有序集提供的,不需要额外的计算)。 可选的LIMIT参数指定返回结果的数量及区间(就像SQL中的SELECTLIMIToffset,count),注意当offset很大时,定位offset的操作可能需要遍历整个有序集。 可选的WITHSCORES参数决定结果集是单单返回有序集的成员,还是将有序集成员及其score值一起返回。 区间及无限 min和max可以是-inf和+inf,这样一来,你就可以在不知道有序集的最低和最高score值的情况下,使用ZRANGEBYSCORE这类命令。 默认情况下,区间的取值使用闭区间(小于等于或大于等于),也可以通过给参数前增加(符号来使用可选的开区间(小于或大于)

  指定区间内,带有score值(可选)的有序集成员的列表。

 zrank

  ZRANK key member

  返回有序集key中成员member的排名。其中有序集成员按score值递增(从小到大)顺序排列 排名以0为底,也就是说,score值最小的成员排名为0。 使用ZREVRANK命令可以获得成员按score值递减(从大到小)排列的排名。

  如果member是有序集key的成员,返回member的排名。 如果member不是有序集key的成员,返回nil。

 zrem

  ZREM key member [member ...]

  移除有序集key中或多个成员,不存在的成员将被忽略。 当key存在但不是有序集类型时,返回一个错误。

  被成功移除的成员的数量,不包括被忽略的成员。

 zremrangebyrank

  ZREMRANGEBYRANK key start stop

  移除有序集key中,指定排名(rank)区间内的所有成员。 区间分别以下标参数start和stop支出,包含start和stop在内。

  被移除成员的数量。

 zremrangebyscore

  ZREMRANGEBYSCORE key min max

  移除有序集key中,所有score值介于min和max之间(包括等于min或max)的成员

  被移除成员的数量

 zrevrange

  zrevrange key start stop [WITHSCORES]

  返回有序集key中,指定区间内的成员。 其中成员的位置按score值递减(从大到小)来排列。具有相同score值的成员按字典序的逆序(reverse lexicographical order)排列。 除了成员按score值递减的次序排列这一点外,ZREVRANGE命令的其他方面和ZRANGE命令一样。

  指定区间内,带有score值(可选)的有序集成员的列表。

 zscore

  ZSCORE key member

  返回有序集key中,成员member的score值。 如果member元素不是有序集key的成员,或key不存在,返回nil。

  member成员的score值,以字符串形式表示。

 zunionstore

  ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

  计算给定的一个或多个有序集的并集,其中给定key的数量必须以numkeys参数指定,并将该并集(结果集)储存到destination。 默认情况下,结果集中某个成员的score值是所有给定集下该成员score值之和。 WEIGHTS 使用WEIGHTS选项,你可以为每个给定有序集分别指定一个乘法因子(multiplication factor),每个给定有序集的所有成员的score值在传递给聚合函数(aggregation function)之前都要先乘以该有序集的因子。 如果没有指定WEIGHTS选项,乘法因子默认设置为1。 AGGREGATE 使用AGGREGATE选项,你可以指定并集的结果集的聚合方式。 默认使用的参数SUM,可以将所有集合中某个成员的score值之和作为结果集中该成员的score值;使用参数MIN,可以将所有集合中某个成员的最小score值作为结果集中该成员的score值,而参数MAX则是将所有集合中某个成员的最大score值作为结果集中该成员的score值。

  保存到destination的结果集的基数。

 zinterstore

  ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

  计算给定的一个或多个有序集的交集,其中给定key的数量必须以numkeys参数指定,并将该交集(结果集)储存到destination。 默认情况下,结果集中某个成员的score值是所有给定集下该成员的score值之和。

  保存到destination的结果集的基数。

 zscan

  ZSCAN key cursor [MATCH pattern] [COUNT count]

 zrangebylex

  ZRANGEBYLEX key min max [LIMIT offset count]

  当有序集合的所有成员都具有相同的分值时,有序集合的元素会根据成员的字典序(lexicographical ordering)来进行排序,而这个命令则可以返回给定的有序集合键key中,值介于min和max之间的成员。 如果有序集合里面的成员带有不同的分值,那么命令返回的结果是未指定的(unspcified)。 命令会使用C语言中的memcmp()函数,对集合中的每个成员进行逐个字节的对比(byte-by-byte compare),并按照从低到高的顺序,返回排序后的集合成员。如果两个字符串有一部分内容是相同的话,那么命令会认为较长的字符串比较短的字符串要大。 可选的LIMIT offset count参数用于获取指定范围内的匹配元素。 如何指定范围区间 合法的min和max参数必须包含(或者[,其中(表示开区间(指定的值不会被包含在范围之内),而[则表示闭区间(指定的值会被包含在范围之内)。 特殊值+和-在min参数以及max参数中具有特殊的意义,其中+表示正无限,而-表示负无限。因此,向一个所有成员的分值都相同的有序集合发送命令ZRANGEBYLEX <zset> - +,命令将返回有序集合中的所有元素。

  数组回复:一个列表,列表里面包含了有序集合在指定范围内的成员。

 zlexcount

  ZLEXCOUNT key min max

  对于一个所有成员的分值都相同的有序集合键key来说,这个命令会返回该集合中,成员介于min和max范围内的元素数量。

  整数回复:指定范围内的元素数量。

 zremrangebylex

  ZREMRANGEBYLEX key min max

  对于一个所有成员的分值都相投的有序集合键key来说,这个命令会移除该集合中,成员介于min和max范围内的所有元素。

  整数回复:被移除的元素数量。

HyperLogLog

 pfadd

  PFADD key element [element ...]

  将任意数量的元素添加到指定的HyperLogLog里面。 作为这个命令的副作用,HyperLogLog内部可能会被更新,以便反映一个不同的唯一元素的估计数量(也即是集合的基数)。 如果HyperLogLog估计的近似基数(approximated cardinality)在命令执行之后出现了变化,那么命令返回1 ,否则返回0。如果命令执行时给定的键不存在,那么程序将先创建一个空的HyperLogLog结构,然后再执行命令。 调用PFADD命令时可以只给出键名而不给定元素: 如果给定键已经是一个HyperLogLog,那么这种调用不会产生任何效果。 但如果给定的键不存在,那么命令会创建一个空的HyperLogLog,并向客户端返回1.

  整数回复:如果HyperLogLog的内部存储被修改了,那么返回1,否则返回0。

 pfcount

  PFCOUNT key [key ...]

  当PFCOUNT命令作用于单个键时,返回储存在给定键的HyperLogLog的近似基数,如果键不存在,那么返回0. 当PFCOUNT命令作用于多个键时,返回所有给定HyperLogLog的并集的近似基数,这个近似基数是通过将所有给定HyperLogLog合并至一个临时HyperLogLog来计算得出的。 通过HyperLogLog数据结构,用户可以使用少量固定大小的内存,来储存集合中的唯一元素(每个HyperLogLog只需使用12k字节内存,以及几个字节的内存来储存键本身)。 命令返回的可见集合(observed set)基数并不是精确值,而是一个带有0.81%标准错误的近似值。

  整数回复:给定HyperLogLog包含的唯一元素的近似数量。

 pfmerge

  PFMERGE destkey sourcekey [sourcekey ...]

  将多个HyperLogLog合并(merge)为一个HyperLogLog,合并后HyperLogLog的基数接近于所有输入HyperLogLog的可见集合(observed set)的并集。 合并得出的HyperLogLog会被储存在destkey键里面,如果该键不存在,那么命令在执行之前,会先为该键创建一个空的HyperLogLog。

  字符串回复:返回OK

GEO

 geoadd

  GEOADD key longitude latitude member[longitude latitude member...]

  将给定的空间元素(纬度、精度、名字)添加到指定的键里面。这些数据会以有序集合的形式被储存在键里面,从而使得像GEORADIUS和GEORADIUSBYMEMBER这样的命令可以在之后通过位置查询取得这些元素。 GEOADD命令以标准的x,y格式接受参数,所以用户必须先输入经度,然后再输入纬度。GEOADD能够激励的坐标是有限的;非常接近的两极区域是无法被索引的。 有效的经度介于-180度至180度之间。 有效的纬度介于-85.05112878度至85.05112878之间。 当用户尝试输入一个超出范围的经度或者纬度时,GEOADD命令将返回一个错误。

  新添加到键里面的空间元素数量,不包括那些已经存在但是被更新的元素。

 geopos

  GEOPOS key member [member ...]

  从键里面返回所有给定位置元素的位置(经度和纬度)。 因为GEOPOS命令接受可变数量的位置作为输入,所以即使用户只给了一个位置元素,命令也会返回数组回复。

  GEOPOS命令返回一个数组,数组中的每个项都由两个元素组成:第一个元素为给定位置元素的经度,而第二个元素则为给定位置元素的纬度。 当给定的位置元素不存在时,对应的数组项为空值。

 geodist

  GEODIST key member1 member2 [unit]

  返回两个给定位置之间的距离。 如果两个位置之间的其中一个不存在,那么命令返回空值。 指定单位的参数unit必须是以下单位的其中一个: m表示单位为米 km表示单位为千米 mi表示单位为英里 ft表示单位为英尺 如果用户没有显式地指定单位参数,那么GEODIST默认使用米作为单位。 GEODIST命令在计算距离时会假设地球为完美的球形,在极限情况下,这一假设最大会造成0.5%的误差。

  计算出的距离会以双精度浮点数的形式被返回。如果给定的位置元素不存在,那么命令返回空值。

 georadius

  GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]

  以给定的经纬度为中心,返回键包含的位置元素当中,与中心的距离不超过给定最大距离的所有位置元素。 在给定以下可选项时,命令会返回额外的信息: WITHDIST:在返回位置元素的同时,将位置元素与中心之间的距离也一并返回。距离的单位和用户给定的范围单位保持一致。 WITHCOORD:将位置元素的经度和纬度也一并返回。 WITHHASH:以52位有符号整数的形式,返回位置元素经过原始geohash编码的有序集合分值。这个选项主要用于底层应用或者调试,实际的作用并不大。 命令默认返回未排序的位置元素。通过一下两个参数,用户可以指定被返回位置元素的排序方式: ASC:根据中心的位置,按照从近到远的方式返回位置元素。 DESC:根据中心的位置,按照从远到近的方式返回位置元素。 在默认情况下,GEORADIUS命令会返回所有匹配的位置元素。虽然用户可以使用COUNT<count>选项去获取前N个匹配元素,但是因为命令内部可能会需要对所有被匹配的元素进行处理,所以在对一个非常大的区域进行搜索时,即使只是用COUNT选项去获取少量元素,命令的执行速度也可能会非常慢。但是从另一方面来说,使用COUNT选项去减少需要返回元素的数量,对于减少带宽来说仍然是非常有用的。

  GEORADIUS命令返回一个数组,具体来说: 在没有给定任何WITH选项的情况下,命令只会返回一个像["New York","Milan","Paris"]这样的线性(linear)列表。 在指定了WITHCOORD、WITHDIST、WITHHASH等选项的情况下,命令返回一个二层嵌套数组,内层的每个子数组就表示一个元素。 在返回嵌套数组时,子数组的第一个元素总是位置元素的名字。至于额外的信息,则会作为子数组的后续元素,按照以下顺序被返回: 1.以浮点数格式返回的中心与位置元素之间的距离,单位与用户指定范围时的单位一致。 2.geohash整数。 由两个元素组成的坐标,分别为经度和纬度。

 georadiusbymember

  GEORADIUSBYMEMBER key member redius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]

  这个命令和GEORADIUS命令一样,都可以找出位于指定范围内的元素,但是GEORADIUSBYMEMBER的中心店是由给定的位置元素决定的,而不是像GEORADIUS那样,使用输入的经度和纬度来决定中心点。

  一个数组,数组中的每个项表示一个范围之内的位置元素。

 geohash

  GEOHASH key member [member ...]

  返回一个或多个位置元素的Geohash表示。

  一个数组,数组的每个项都是一个geohash。命令返回的geohash的位置与用户给定的位置元素的位置一一对应。

Pub/Sub

 psubscribe

  PSUBSCRIBE pattern [pattern ...]

  订阅一个或多个符合给定模式的频道。每个模式以*作为匹配符,比如it*匹配所有以it开头的频道(it.news、it.blog、it.tweets等等),news.*匹配所有以news.开头的频道(news.it、news.global.today等等),诸如此类。

  接收到的信息

 publish

  PUBLIST channel message

  将信息message发送到指定的频道channel

  接收到信息message的订阅者数量。

 pubsub

  PUBSUB <subcommand> [argument [argument ...]]

  PUBSUB是一个查看订阅与发布系统状态的内省命令,它由数个不同格式的子命令组成。 (1)PUBSUB CHANNELS [pattern] 列出当前的活跃频道。 活跃频道指的是那些至少有一个订阅者的频道,订阅模式的客户端不计算在内。 pattern参数是可选的: 如果不给出pattern参数,那么列出订阅与发布系统中的所有活跃频道。 如果给出pattern参数,那么只列出和给定模式pattern相匹配的那些活跃频道。 返回值:一个由活跃频道组成的列表。 (2)PUBSUB NUMSUB [channel-1 ...channel-N] 返回给定频道的订阅者数量,订阅模式的客户端不计算在内。 返回值:一个多条批量回复(Multi-bulk reply),回复中包含给定的频道,以及频道的订阅者数量。格式为:频道channel-1,channel-1的订阅者数量,频道channel-2,channel-2的订阅者数量,诸如此类。回复中频道的排列顺序和执行命令时给定频道的排列顺序一致。不给定任何频道而直接调用这个命令也是可以的,在这种情况下,命令只返回一个空列表。 (3)PUBSUB NUMPAT 返回订阅模式的数量。 注意,这个命令返回的不是订阅模式的客户端的数量,而是客户端订阅的所有模式的数量总和。 一个整数回复(Integer reply)。

 punsubscribe

  PUNSUBSCRIBE [pattern [pattern ...]]

  指示客户端退订所有给定模式。 如果没有模式被指定,也即是,一个无参数的PUNSUBSCRIBE调用被执行,那么客户端使用PSUBSCRIBE命令订阅的所有模式都会被退订。 在这种情况下,命令会返回一个信息,告知客户端所有被退订的模式。

  这个命令在不同的客户端中有不同的表现。

 subscribe

  SUBSCRIBE channel [channel ...]

  订阅给定的一个或多个频道的信息。

  接收到的信息

 unsubscribe

  UNSUBSCRIBE [channel [channel ...]]

  指示客户端退订给定的频道。 如果没有频道被指定,也即是,一个无参数的UNSUBSCRIBE调用被执行,那么客户端使用SUBSCRIBE命令订阅的所有频道会被退订。在这种情况下,命令会返回一个信息,告知客户端所有被退订的频道。

  这个命令在不同的客户端有不同的表现。

Transaction

 discard

  DISCARD

  取消事务,放弃执行事务块内所有的命令。 如果正在使用WATCH命令监视某个(或某些)key,那么取消所有监视,等同于执行命令UNWATCH。

  总是返回OK

 exec

  EXEC

  执行所有事务块内的命令。 假如某个(或某些)key正处于WATCH命令的监视之下,且事务块中有和这个(或这些)key相关的命令,那么EXEC命令只在这个(或这些)key没有被其他命令所改动的情况下执行并生效,否则该事务被打断(abort)。

  事务块内所有命令的返回值,按命令执行的先后顺序排列。 当操作被打断时,返回nil

 multi

  MULTI

  标记一个事务块的开始。 事务块内的多条命令会按照先后顺序被放到一个队列当中,最后由EXEC命令原子性(atomic)地执行。

  总是返回ok

 unwatch

  UNWATCH

  取消WATCH命令对所有key的监视。 如果在执行WATCH命令之后,EXEC命令或DISCARD命令先被执行了的话,那么就不需要再执行UNWATCH了。 因为EXEC命令会执行事务,因此WATCH命令的效果已经产生了;而DISCARD命令在取消事务的同时也会取消所有对key的监视,因此这两个命令执行之后,就没有必要执行UNWATCH了。

  总是OK

 watch

  WATCH key [key ...]

  监视一个(或多个)key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断。

  总是返回OK

script

 eval

  EVAL script numkeys key [key ...] arg [arg ...]

  从Redis2.6.0版本开始,通过内置的Lua解释器,可以使用EVAL命令对Lua脚本进行求值。 script参数是一段Lua5.1脚本程序,它会被运行在Redis服务器上下文中,这段脚本不必(也不应该)定义为一个Lua函数。 numkeys参数用于指定键名参数的个数。 键名参数 key [key ...]从EVAL的第三个参数开始算起,表示脚本中所用到的那些Redis键(key),这些键名参数可以在Lua中通过全局变量KEYS数组,用1为基址访问的形式访问(KEY[1],KEY[2],以此类推)。 在命令的最后,那些不是键名参数的附加参数arg [args ...],可以在Lua中通过全局变量ARGV数组访问,访问的形式和KEYS变量类似(ARGV[1]、ARGV[2],诸如此类)。 Redis使用单个Lua解释器去运行所有脚本,并且,Redis也保证脚本会议原子性(atomic)的方式执行:当某个脚本正在运行的时候,不会有其他脚本或Redis命令被执行。 Redis提供了一下几个SCRIPT命令,用于对脚本子系统(scripting subsystem)进行控制: SCRIPT FLUSH:清除所有脚本缓存 SCRIPT EXISTS:根据给定的脚本校验和,检查指定的脚本是否存在于脚本缓存 SCRIPT LOAD:将一个脚本装入脚本缓存,但并不立即运行它 SCRIPT KILL:杀死当前正在运行的脚本 在Lua脚本中,可以通过调用redis.log函数来写Redis日志(log) redis.log(loglevel,message) 其中,message参数是一个字符串,而loglevel参数可以是以下任意一个值: redis.LOG_DEBUG redis.LOG_VERBOSE redis.LOG_NOTICE redis.LOG_WARNING 上面这些等级(level)和标准Redis日志的等级相对应。 对于脚本散发(emit)的日志,只有那些和当前Redis实例所设置的日志等级相同或更高级的日志才会被散发。 脚本应该仅仅用于传递参数和对Reids数据进行处理,它不应该尝试去访问外部系统(比如文件系统),或者执行任务系统调用。 初次之外,脚本还有一个最大执行时间限制,它的默认值是5秒钟,一般正常运作的脚本通常可以在几分之几毫秒之内完成,花不了那么多时间,这个限制主要是为了防止因编程错误而造成的无限循环而设置的。 最大执行时间的长短由lua-time-limit选项来控制(以毫秒为单位),可以通过编辑redis.conf文件或者使用CONFIG GET和CONFIG SET命令来修改。 在流水线请求的上下文中使用EVALSHA命令时,要特别小心,因为在流水线中,必须保证命令的执行顺序。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics