1、redis默认有16个数据库,可以通过select命令来切换库,通过DbSIZE命令来获取key的个数
2、KEY
KEYS pattern:查找所有符合给定模式 pattern
的key
EXISTS key:检查给定 key
是否存在
EXPIRE key seconds:为给定 key
设置生存时间,当key
过期时(生存时间为0
),它会被自动删除
MOVE key db:将当前数据库的 key
移动到给定的数据库db
当中
TYPE key:返回 key
所储存的值的类型
3、String:
APPEND key value:如果 key
已经存在并且是一个字符串, APPEND 命令将value
追加到key
原来的值的末尾
STRLEN key:返回 key
所储存的字符串值的长度。
INCR key:将 key
中储存的数字值增一
INCRBY key increment:将 key
所储存的值加上增量increment
DECR key:将
key
中储存的数字值减一
DECRBY key decrement:将
key
所储存的值减去减量decrement
GETRANGE key start end:返回 key
中字符串值的子字符串,字符串的截取范围由start
和end
两个偏移量决定(包括 start
和end
在内)。
SETRANGE key offset value:用 value
参数覆写(overwrite)给定key
所储存的字符串值,从偏移量offset
开始。
SETEX key seconds value:将值 value
关联到key
,并将key
的生存时间设为seconds
(以秒为单位)。如果key
已经存在, SETEX 命令将覆写旧值,如果不存在则创建
SETNX key value:将 key
的值设为value
,当且仅当key
不存在。若给定的key
已经存在,则 SETNX 不做任何动作。为了避免覆盖
MSET key value [key value ...]:同时设置一个或多个 key-value
对。如果某个给定 key
已经存在,那么 MSET会用新值覆盖原来的旧值,如果这不是你所希望的效果,请考虑使用MSETNX命令:它只会在所有给定key
都不存在的情况下进行设置操作。
MSETNX key value [key value ...]:同时设置一个或多个 key-value
对,当且仅当所有给定 key
都不存在。即使只有一个给定 key
已存在, MSETNX也会拒绝执行所有给定 key
的设置操作
MGET key [key ...]:返回所有(一个或多个)给定 key
的值。如果给定的 key
里面,有某个key
不存在,那么这个key
返回特殊值 nil
。因此,该命令永不失败
4、Hash
HSET key field value:将哈希表 key
中的域field
的值设为 value
。
HMSET key field value [field value ...]:同时将多个 field-value
(域-值)对设置到哈希表 key
中。此命令会覆盖哈希表中已存在的域。
HSETNX key field value:将哈希表 key
中的域field
的值设置为 value
,当且仅当域 field
不存在。若域field
已经存在,该操作无效。如果key
不存在,一个新哈希表被创建并执行HSETNX 命令。
HGET key field:返回哈希表 key
中给定域field
的值。
HGETALL key:返回哈希表 key
中,所有的域和值。在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。
HDEL key field [field ...]:
删除哈希表 key
中的一个或多个指定域,不存在的域将被忽略。
HLEN key:返回哈希表 key
中域的数量。
HEXISTS key field:查看哈希表 key
中,给定域field
是否存在。
HKEYS key:返回哈希表 key
中的所有域。
HINCRBY key field increment:为哈希表 key
中的域 field
的值加上增量increment
(整数)。增量也可以为负数,相当于对给定域进行减法操作。如果key
不存在,一个新的哈希表被创建并执行HINCRBY命令。如果域field
不存在,那么在执行命令前,域的值被初始化为0
。对一个储存字符串值的域 field
执行HINCRBY 命令将造成一个错误。
HINCRBYFLOAT key field increment:为哈希表 key
中的域 field
加上浮点数增量increment
(整数,浮点数均可) 。如果哈希表中没有域field
,那么HINCRBYFLOAT会先将域field
的值设为 0
,然后再执行加法操作。如果键 key
不存在,那么HINCRBYFLOAT会先创建一个哈希表,再创建域field
,最后再执行加法操作。
当以下任意一个条件发生时,返回一个错误:
- 域
field
的值不是字符串类型(因为 redis 中的数字和浮点数都以字符串的形式保存,所以它们都属于字符串类型) - 域
field
当前的值或给定的增量increment
不能解释(parse)为双精度浮点数(double precision floating point number)
HINCRBYFLOAT命令的详细功能和HINCRBYFLOAT 命令类似,请查看HINCRBYFLOAT 命令获取更多相关信息。
5、List
LRANGE key start stop:返回列表
key
中指定区间内的元素,区间以偏移量start
和stop
指定。下标(index)参数start
和stop
都以0
为底,也就是说,以0
表示列表的第一个元素,以1
表示列表的第二个元素,以此类推。你也可以使用负数下标,以-1
表示列表的最后一个元素,-2
表示列表的倒数第二个元素,以此类推。
LPUSH key value [value ...]:将一个或多个值 value
插入到列表 key
的表头如果有多个value
值,那么各个value
值按从左到右的顺序依次插入到表头:比如说,对空列表mylist
执行命令LPUSHmylistabc。
RPUSH key value [value ...]:将一个或多个值 value
插入到列表 key
的表尾(最右边)。如果有多个value
值,那么各个value
值按从左到右的顺序依次插入到表尾:比如对一个空列表mylist
执行RPUSHmylistabc
,得出的结果列表为abc
,等同于执行命令RPUSHmylista
、 RPUSHmylistb
、RPUSHmylistc。
LPOP key:移除并返回列表 key
的头元素
RPOP key:移除并返回列表 key
的尾元素
LINDEX key index:返回列表 key
中,下标为index
的元素。下标(index)参数start
和 stop
都以 0
为底,也就是说,以0
表示列表的第一个元素,以1
表示列表的第二个元素,以此类推。你也可以使用负数下标,以-1
表示列表的最后一个元素, -2
表示列表的倒数第二个元素,以此类推。
LLEN key:返回列表 key
的长度。
LREM key count value
根据参数 count
的值,移除列表中与参数value
相等的元素。
count
的值可以是以下几种:
count > 0
: 从表头开始向表尾搜索,移除与value
相等的元素,数量为count
。count < 0
: 从表尾开始向表头搜索,移除与value
相等的元素,数量为count
的绝对值。count = 0
: 移除表中所有与value
相等的值。
LTRIM key start stop:对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,然后重新赋值给列表,不在指定区间之内的元素都将被删除。
RPOPLPUSH source destination:
命令RPOPLPUSH在一个原子时间内,执行以下两个动作:
- 将列表
source
中的最后一个元素(尾元素)弹出,并返回给客户端。 - 将
source
弹出的元素插入到列表destination
,作为destination
列表的的头元素。
LSET key index value:将列表 key
下标为index
的元素的值设置为value
。
LINSERT key BEFORE|AFTER pivot value:将值 value
插入到列表 key
当中,位于值pivot
之前或之后。当pivot
不存在于列表 key
时,不执行任何操作。当key
不存在时,key
被视为空列表,不执行任何操作。如果key
不是列表类型,返回一个错误。
6、Set
SADD key member [member ...]:将一个或多个 member
元素加入到集合 key
当中,已经存在于集合的member
元素将被忽略
SCARD key:返回集合 key
的基数(集合中元素的数量)。
SMEMBERS key:返回集合 key
中的所有成员。
SREM key member [member ...]:移除集合 key
中的一个或多个 member
元素,不存在的member
元素会被忽略。
SRANDMEMBER key [count]:如果命令执行时,只提供了 key
参数,那么返回集合中的一个随机元素。
从 Redis 2.6 版本开始, SRANDMEMBER命令接受可选的 count
参数:
- 如果
count
为正数,且小于集合基数,那么命令返回一个包含count
个元素的数组,数组中的元素各不相同。如果count
大于等于集合基数,那么返回整个集合。 - 如果
count
为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为count
的绝对值。
该操作和 SPOP相似,但SPOP将随机元素从集合中移除并返回,而 SRANDMEMBER 则仅仅返回随机元素,而不对集合进行任何改动。
SMOVE source destination member:将 member
元素从 source
集合移动到destination
集合。
SMOVE是原子性操作。如果 source
集合不存在或不包含指定的member
元素,则SMOVE 命令不执行任何操作,仅返回0
。否则, member
元素从 source
集合中被移除,并添加到destination
集合中去。当destination
集合已经包含member
元素时, SMOVE命令只是简单地将source
集合中的member
元素删除。
SDIFF key [key ...]:返回一个集合的全部成员,该集合是所有给定集合之间的差集。
SINTER key [key ...]:返回一个集合的全部成员,该集合是所有给定集合的交集。
SUNION key [key ...]:返回一个集合的全部成员,该集合是所有给定集合的并集。
7、ZSET
ZADD key score member [[score member] [score member] ...]:将一个或多个member
元素及其 score
值加入到有序集 key
当中。如果某个member
已经是有序集的成员,那么更新这个member
的 score
值,并通过重新插入这个 member
元素,来保证该 member
在正确的位置上。score
值可以是整数值或双精度浮点数。如果key
不存在,则创建一个空的有序集并执行ZADD操作。
ZRANGE key start stop [WITHSCORES]:返回有序集 key
中,指定区间内的成员。其中成员的位置按 score
值递增(从小到大)来排序。具有相同 score
值的成员按字典序来排列。可以通过使用 WITHSCORES
选项,来让成员和它的 score
值一并返回,返回列表以 value1,score1, ..., valueN,scoreN
的格式表示。
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]:返回有序集key
中,所有 score
值介于 min
和max
之间(包括等于 min
或 max
)的成员。有序集成员按score
值递增(从小到大)次序排列。具有相同score
值的成员按字典序来排列(该属性是有序集提供的,不需要额外的计算)。可选的LIMIT
参数指定返回结果的数量及区间(就像SQL中的SELECT LIMIT offset, count
),注意当offset
很大时,定位 offset
的操作可能需要遍历整个有序集,此过程最坏复杂度为 O(N) 时间。可选的 WITHSCORES
参数决定结果集是单单返回有序集的成员,还是将有序集成员及其 score
值一起返回。
ZREM key member [member ...]:移除有序集 key
中的一个或多个成员,不存在的成员将被忽略。
ZSCORE key member:返回有序集 key
中,成员member
的 score
值。
ZRANK key member:返回有序集 key
中成员member
的排名。其中有序集成员按score
值递增(从小到大)顺序排列。排名以0
为底,也就是说, score
值最小的成员排名为 0
ZREVRANGE key start stop [WITHSCORES]:返回有序集 key
中,指定区间内的成员。其中成员的位置按 score
值递减(从大到小)来排列。具有相同 score
值的成员按字典序的逆序排列。
ZCOUNT key min max:返回有序集 key
中,score
值在 min
和 max
之间(默认包括score
值等于 min
或 max
)的成员的数量。
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]:返回有序集key
中, score
值介于 max
和min
之间(默认包括等于 max
或 min
)的所有的成员。有序集成员按score
值递减(从大到小)的次序排列。具有相同score
值的成员按字典序的逆序排列。
Redis发送订阅:进程中的一种通信模式
SUBSCRIBE :订阅
PUBLISH :发布
先订阅,后发布