Redis入门

一、基础命令

A、获得符合规则的键名列表    KEYS pattern 

?匹配一个字符

*  匹配任何个(包括0个)字符

[] 匹配括号件的任一字符,可以使用“-”符号表示一个范围,如 a[b-d]可以匹配“ab”、“ac”、“ad”

\x 匹配字符x,用于转义符号。如要匹配“?”就需要使用\?

ps:KEYS 命令需要遍历Redis中的所有键,当键的数量较多时会影响性能,不建议在生产环境使用。

Redis不区分命令大小写。

B、判断一个键是否存在   EXISTS key    如果键存在则返回整数类型 1,否则返回 0。

C、删除键    DEL key  [key 。。。。。。]   可以删除一个或多个键,返回值是删除的键的个数。

ps:DEL命令的参数不支持通配符。比如要删除所有以“user:”开头的键,可以执行    redis-cli KEYS “user:” | xargs redis-cli DEL   或   redis-cli DEL   ‘ redis-cli KEYS “user:’

D、获得键值的数据类型    TYPE key

二、字符串类型

字符串类型是Redis中最基本的书籍类型,它能存储任何形式的字符串。一个字符串类型键允许存储的数据的最大容量是512MB。

1、赋值与取值

SET key  value

GET key

例:127.0.0.1:6379> set key hello

OK

127.0.0.1:6379> get key

"hello"

2、递增数字

INCR    key            其作用是让当前键值递增,并返回递增后的值。

127.0.0.1:6379> incr num

(integer) 1

127.0.0.1:6379> incr num

(integer) 2

127.0.0.1:6379> incr num

(integer) 3

3、增加指定的整数

INCRBY key increment    如   INCRBY bar 2

4、减少指定的整数

DECR key            

DECR key decrement

5、增加指定浮点数

INCRBYFLOAT bar 2.7                 

INCRBYFLOAT bar 5E+4

6、向尾部追加值

APPEND key value      向键值的末尾追加value。如果键值不存在则将该键的值设置为value。返回值是追加后字符串的总长度。

7、获取字符串长度

STRLEN key        返回键值的长度,如果键不存在则返回0

8、同时获得/设置多个键值

MGET key [key 。。。。。。]

MSET key  value [key  value 。。。。。。]

9、位操作

GETBIT  key offset    获得一个字符串类型键指定位置的二进制位的值(0或1),索引从0开始

SETBIT  key offset  value    设置字符串类型指定位置的二进制的值,返回值为该位置的旧值

BITCOUNT  key [start]  [end]    获得字符串类型键中值是1的二进制位个数,可以通过参数来限制统计的字节范围,如我们只希望统计前两个字节     BITCOUNT  key 0  1

BITTOP  opration destkey key  [key ......]        对多个字符串类型键进行位运算,并将结果存储在destkey参数指定的键中。

三、散列类型

散列类型的字段值只能是字符串,不支持其他数据类型。一个散列类型键可以包含之多 2^32 - 1  个字段。

散列类型适合存储对象:使用对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。

1、赋值与取值

HSET key field value

HGET key field

HMSET key field value [field value ......]

HMGET key field [field  ......]

HGETALL key

2、判断字段是否存在

HEXISTS  key field            存在则返回1,否则返回0

3、当字段不存在时赋值

HSETNX   key  field value        如果字段已经存在,该命令将不执行任何操作。原子操作。

4、增加数字

HINCRBY  key field increment    

5、删除字段

HDEL  key  field  [field ......]

6、只获取字段名或字段值

HKEYS key        获取字段名

HVALS key        获取字段值

7、获取字段数量

HLEN  key

四、列表类型

列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。

列表类型内部是使用双向链表实现的,获取越接近两端的元素速度就越快。

与散列类型最多能容纳的字段数量相同,一个列表类型键最多能容纳 2^32 - 1  个元素。

1、向列表两端增加元素

LPUSH key  value [value ......]    向列表左边增加元素,返回值表示增加元素后列表的长度

RPUSH key  value [value ......]    向列表右边增加元素

2、从列表两端弹出元素

LPOP key  从列表左边弹出一个元素,执行两步操作,第一步是将列表左边的元素从列表中移除,第二步是返回被移除的元素值。

RPOP key 从列表右边弹出一个元素

3、获取列表中元素的个数

LLEN   key        当键不存在时返回0

4、获得列表片段

LRANGE key start  stop        获得列表中的某一片段。返回索引从start到stop之间的所有元素(包含两端的元素)。Redis的列表起始索引为0。支持负索引,表示从右边开始计算序数,如 -1 表示最右边第一个元素, -2 表示最右边第二个元素。

如果start的索引位置比stop的索引位置靠后,则会返回空列表。如果stop大于实际的索引范围,则会返回到列表最右边的元素。

5、删除列表中指定的值

LREN key count value        删除列表中前count个值为value的元素,返回值是实际删除的元素个数。根据count值的不同,该命令的执行方式会略有差异。

当count>0时该命令会从列表左边开始删除前count个值为value的元素;当count<0时该命令会从列表右边开始删除前 |count| 个值为value的元素;当count=0时该命令删除所有值为value的元素。

6、获得/设置指定索引的元素值

LIINDEX  key  index        返回指定索引的元素,索引从0开始。如果index是负数则表示从右边开始计算索引,最右边元素的索引是 -1

LSET  key index  value

 7、只保留列表指定片段

LTRIM  key start  end     删除指定索引范围之外的所有元素

8、向列表中插入元素

LINSERT  key BEFORE|AFTER pivot  value    首先会在列表中从左到右查找值为pivot的元素,然后根据第二个参数是BEFORE还是AFTER来决定将value插入到该元素的前面还是后面。返回值是插入后列表的元素个数。

9、将元素从一个列表转到另一个列表

RPOPLPUSH  source  destination      先从source列表类型键的右边弹出一个元素,然后将其加入到destination列表类型键的左边,并返回这个元素的值,整个过程是原子的。

五、集合类型

集合类型在Redis内部是使用值为空的散列表实现的。一个集合类型键可以存储至多2^32 - 1  个字符串。

1、增加/删除元素

SADD    key member  [member  ......]       向集合中增加一个或多个元素,如果键不存在则会自动创建。返回值是成功加入的元素数量。

SREM   key member  [member  ......]        从集合中删除一个或多个元素,并返回删除成功的个数。

2、获得集合中的所有元素

SMEMBERS     key         返回集合中的所有元素。

3、判断元素是否在集合中

SISMEMBER   key member        时间复杂度为O(1),当值存在时返回1,当值不存在或键不存在时返回0.

4、集合间运算

SDIFF    key  [key  ......]        对多个集合执行差集运算。例: SDIFF   setA  setB   setC   计算顺序是先计算 setA -  setB,再计算结果与setC的差集。

SINTER   key  [key  ......]        对多个集合执行交集运算。

SUNION   key  [key  ......]         对多个集合执行并集运算。

5、获得集合中元素个数

SCARD  key        咏来获得集合中元素的个数

6、进行集合运算并将结果存储

SDIFFSTORE  destination  key  [key  ......]        计算差集并将结果存储在destination键中

SINTERSTORE  destination  key  [key  ......]        计算交集并将结果存储在destination键中

SUNIONSTORE  destination  key  [key  ......]        计算并集并将结果存储在destination键中

7、随机获得集合中的元素

SRANDMEMBER  key  [count]        随机从集合中获取一个元素,可以传递count参数来一次随机获得多个元素。当count为正数时,会随机从集合中获得count个不重复的元素;当count为负数时,会随机从集合里获得|count| 个元素,这些元素有可能相同。

8、从集合中弹出一个元素

SPOP  key    从集合中随机选择一个元素弹出。

六、有序集合类型

在集合类型的基础上有序集合类型为集合中的每个元素都关联了一个分数,这使得我们不仅可以完成插入、删除和判断元素是否存在等集合类型支持的操作,还能够获得分数最高(最低)的前N个元素、获得指定分数范围内的元素等与分数有关的操作。

虽然集合中每个元素都是不同的,但是他们的分数缺可以相同。

有序集合类型和列表类型的相似点:二者都是有序的;二者都可以获得某一范围的元素。

有序结合和列表的不同点:列表类型是通过链表实现的,获取靠近两端的数据速度极快,更适合实现如“新鲜事儿”等很少访问中间元素的应用;有序集合类型是使用散列表和跳跃表实现的,所以即使访问中间部分的数据也很快;

列表中不能简单地调整某个元素的位置,但是有序集合可以;有序集合比列表更耗费内存。

1、增加元素

ZADD key score member  [score member  ......]        向有序集合中加入一个元素和钙元素的分数,如果该元素存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数。-inf和+inf分表标识负无穷和正无穷。

2、获得元素的分数

ZSCORE  key member

3、获得排名在某个范围的元素列表

ZRANGE  key start stop  [WITHSCORES]       按元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素)。索引从0开始,负数表示从后向前查找,-1表示最后一个元素。如果需要同时获得元素的分数可以在命令的尾部加上WITHSCORES。

ZREVRANGE  key start stop  [WITHSCORES]    按照元素分数丛大到小的顺序给出结果。

4、获得指定分数范围的元素

ZRANGEBYSCORE  key min max [WITHSCORES]  [LIMIT  offset count]    按照分数从小到大的顺序返回分数在min和max之间(包含min和max)的元素。在分数前加上"("符号,则不包含端点值。-inf和+inf分表标识负无穷和正无穷。

LIMIT  offset count表示在获得的元素列表的基础上向后偏移 offset 个元素,并且只获取前  count 个元素。

5、增加某个元素的分数

ZINCRBY    key  increment member    增加一个元素的分数,返回值是更改后的分数。如果指定的元素不存在,在执行命令前会先建立它并将他的分数赋为0再执行操作。

6、获得集合中元素的数量

ZCARD  key

7、获得指定分数范围内的元素个数

ZCOUNT  key min  max

8、删除一个或多个元素

ZREM  key member [member  ......]

9、按照排名范围删除元素

ZREMRANGEBYRANK  key  start  stop     按照元素从大到小的顺序删除处在指定排名范围内的所有元素,并返回删除的元素数量。

10、按照分数范围删除元素

ZREMRANGEBYSCORE  key  min  max     删除指定分数范围内的所有元素,返回值是删除的元素数量

11、获得元素的排名

ZRANK  key member        按照分数从小到大的顺序获得指定的元素的排名,获得分数最小的元素排名为0。

ZREVRANK  key member     按照分数从大到小的顺序获得指定的元素的排名,获得分数最大的元素排名为0。

12、计算有序结合的交集

ZINTERSTORE    destination  numkeys key  [key  ......]  [WEIGHTS weight [weight ......] ]  [AGGREGATE  SUM|MIN|MAX]    计算多个有序集合的交集并将结果存储在 destination  键中(有序集合),返回值为 destination  键中的元素个数。

destination  键中元素的分数是由 AGGREGATE 参数决定的。当 AGGREGATE 是 SUM时(默认值), destination  键中元素的分数是每个参与计算的集合中该元素分数的和;

当 AGGREGATE 是 MIN时, destination  键中元素的分数是每个参与计算的集合中该元素分数的最小值;

当 AGGREGATE 是 MAX时, destination  键中元素的分数是每个参与计算的集合中该元素分数的最大值。

WEIGHTS 参数用来设置每个集合的权重,每个集合在参与计算式元素的分数会被乘上该集合的权重。

13、计算有序集合的并集

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

猜你喜欢

转载自decao.iteye.com/blog/2400994