Redis之常用命令

目录

Redis数据类型

Key

Value

Redis-Vlaue常用命令

字符串string存储

1.set key value(设值)

2.get key(取值)

3.getset key value(取设值)

4.incr key(X++)

5.decr key(X--)

6.incrby key increment(num +  X)

7.decrby key decrement(num -  X)

 8.append key value(追加字符串)

9.del key(删值)

lists类型存储

1.lpush key value1 value2...(头端插入)

2.rpush key value1、value2…(尾端插入)

3.lrange key start end(查看列表)

4.lpushx key value(检查存在后头端插入)

5.rpushx key value(检查存在后尾端插入)

        6.lpop key(头端弹出)

7.rpop key(尾端弹出)

        8.rpoplpush resource destination(右弹左压)

9.llen key(获取列表长度)

10.lset key index value(替换值)

11.lrem key count value(从左删除count个value值)

12.linsert key before|after pivot value(在privot前/后插入)

存储sets类型

       1.sadd key value1、value2…(添加值)

2.smembers key(查看列表)

3.scard key(获取集合长度)

4.sismember key member(判断元素是否存在)

5.srem key member1、member2…(删除指定元素)

        6.srandmember key(随机返回某值)

7.sdiff sdiff key1 key2(A - B)

8.sdiffstore destination key1 key2{(A - B)---> C}

9.sinter key[key1,key2…] (A ∩ B ∩ ...)

10.sinterstore destination key1 key2{(A ∩ B )---> C}

11.sunion key1、key2(A ∪ B)

12.sunionstore destination key1 key2{(A ∪ B )---> C}

Sorted-Set存储

1.zadd key score member score2 member2 … (添加分值)

2.zcard key(获取集合长度)

3.zcount key min max(获取min-max之间分数成员)

4.zincrby key increment member(+ X = socre)

5.zrange key start end [withscores] (查看列表(含分数))

6.zrevrange key start stop [withscores](分数从高至低排列)

7.zrangebyscore key min max [withscores] [limit offset count](分数从低至高排列)

8.zrank key member(返回某成员的位置)

9.zrem key member[member…](删除成员)

10.zscore key member(获取某成员分数)

hash存储

1.hset key field value(设值一个键值对)

2.hgetall key(获取所有键值对)

3.hget key field(获取一个键值对)

4.hmset key fields(设值多个键值对)

5.hmget key fileds(获取多个键值对)

6.hexists key field(判断field是否存在)

7.hlen key(获取field数量)

8.hincrby key field increment(num +  X)

9.hdel key field{field...}(删除一个或多个键值对)

Key通用操作 

keys pattern

del key1 key2 key3 ....

exists key

rename key newkey

expire key

ttl key

type key


Redis数据类型

redis是一种高级的key-value的存储系统

  • Key

其中的key是字符串类型,尽可能满足如下几点:

1. key不要太长,最好不要操作1024个字节,这不仅会消耗内存还会降低查找效率

2. key不要太短,如果太短会降低key的可读性

3 . 在项目中,key最好有一个统一的命名规范(根据企业的需求)

  • Value

其中value支持五种数据类型:

1. 字符串型 String

2. 字符串列表 Lists

3. 字符串集合 Sets

4. 有序字符串集合 Sorted-Sets

5. 哈希类型 Hash

Redis-Vlaue常用命令

  • 字符串string存储

字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。  在Redis中字符串类型的Value最多可以容纳的数据长度是512M

Redis之常用命令

1.set key value(设值)

设定key持有指定的字符串value,如果该key存在则进行覆盖操作,总是返回”OK”

Redis之常用命令

2.get key(取值)

获取key的value,如果与该key关联的value不是String类型,redis将返回错误信息,因为get命令只能用于获取String value;如果该key不存在,返 回null

Redis之常用命令

3.getset key value(取设值)

先获取该key的值,然后在设置该key的值

Redis之常用命令

4.incr key(X++)

将指定的key的value原子性的递增1,如果该key不存在,其初始值为0,在incr之后其值为1。如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息

Redis之常用命令

5.decr key(X--)

将指定的key的value原子性的递减1,如果该key不存在,其初始值为0,在incr之后其值为-1。如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息

Redis之常用命令

6.incrby key increment(num +  X)

将指定的key的value原子性增加increment,如果该key不存在,器初始值为0,在incrby之后,该值为increment。如果该值不能转成整型,如hello则失败并返回错误信息

Redis之常用命令

7.decrby key decrement(num -  X)

将指定的key的value原子性减少decrement,如果该key不存在,器初始值为0,在decrby之后,该值为decrement。如果该值不能 转成整型,如hello则失败并返回错误信息

Redis之常用命令

 8.append key value(追加字符串)

如果该key存在,则在原有的value后追加该值;如果该 key不存在,则重新创建一个key/value

Redis之常用命令

9.del key(删值)

删除指定key

Redis之常用命令

 

 

  • lists类型存储

在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4294967295。

从元素插入和删除的效率视角来看,如果我们是在链表的两头插入或删除元素,这将会是非常高效的操作,即使链表中已经存储了百万条记录,该操作也可以在常量时间内完成。然而需要说明的是,如果元素插入或删除操作是作用于链表中间,那将会是非常低效的。相信对于有良好数据结构基础的开发者而言,这一点并不难理解。

Redis之常用命令

1.lpush key value1 value2...(头端插入)

在指定的key所关联的list的头部插入所有的values,如果该key不存在,该命令在插入的之前创建一个与该key关联的空链     表,之后再向该链表的头部插入数据。插入成功,返回元素的个数

Redis之常用命令

2.rpush key value1、value2…(尾端插入)

在该list的尾部添加元素

Redis之常用命令

3.lrange key start end(查看列表)

获取链表中从start到end的元素的值,start、end从0开始计数,也可为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个,依次类推

Redis之常用命令

4.lpushx key value(检查存在后头端插入)

仅当参数中指定的key存在时(如果与key管理的list中没有值时,则该key是不存在的)在指定的key所关联的list的头部插入value

Redis之常用命令

5.rpushx key value(检查存在后尾端插入)

在该list的尾部添加元素

Redis之常用命令


        6.lpop key(头端弹出)

返回并弹出指定的key关联的链表中的第一个元素,即头部元素

Redis之常用命令

7.rpop key(尾端弹出)

从尾部弹出元素

Redis之常用命令


        8.rpoplpush resource destination(右弹左压)

将链表中的尾部元素弹出并添加到头部

Redis之常用命令

9.llen key(获取列表长度)

返回指定的key关联的链表中的元素的数量

Redis之常用命令

10.lset key index value(替换值)

设置链表中的index的脚标的元素值,0代表链表的头元素,-1代表链表的尾元素

Redis之常用命令

11.lrem key count value(从左删除count个value值)

删除count个值为value的元素,如果count大于0,从头向尾遍历并删除count个值为value的元素,如果count小于0,则从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素

Redis之常用命令

12.linsert key before|after pivot value(在privot前/后插入)

在pivot元素前或者后插入value这个元素

Redis之常用命令

  • 存储sets类型

在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。需要说明的是,这些操作的时间是常量时间。Set可包含的最大元素数是4294967295。

和List类型不同的是,Set集合中不允许出现重复的元素。和List类型相比,Set类 型在功能上还存在着一个非常重要的特性,即在服务器端完成多个Sets之间的聚合计算操作,如unions、intersections和differences。由于这些操作均在服务端完成, 因此效率极高,而且也节省了大量的网络IO开销

Redis之常用命令


       1.sadd key value1、value2…(添加值)

向set中添加数据,如果该key的值已有则不会重复添加

Redis之常用命令

2.smembers key(查看列表)

获取set中所有的成员

Redis之常用命令

3.scard key(获取集合长度)

获取set中成员的数量

Redis之常用命令

4.sismember key member(判断元素是否存在)

判断参数中指定的成员是否在该set中,1表示存在,0表示不存在或者该key本身就不存在

Redis之常用命令

5.srem key member1、member2…(删除指定元素)

删除set中指定的成员

Redis之常用命令

        6.srandmember key(随机返回某值)

随机返回set中的一个成员

Redis之常用命令

7.sdiff sdiff key1 key2(A - B)

返回key1与key2中相差的成员,而且与key的顺序有关。即返回差集

Redis之常用命令

Redis之常用命令

8.sdiffstore destination key1 key2{(A - B)---> C}

将key1、key2相差的成员存储在destination上

Redis之常用命令

Redis之常用命令

9.sinter key[key1,key2…] (A ∩ B ∩ ...)

返回交集

Redis之常用命令

Redis之常用命令

10.sinterstore destination key1 key2{(A ∩ B )---> C}

将返回的交集存储在destination上

Redis之常用命令

Redis之常用命令

11.sunion key1、key2(A ∪ B)

返回并集

Redis之常用命令

Redis之常用命令

12.sunionstore destination key1 key2{(A ∪ B )---> C}

将返回的并集存储在destination上

Redis之常用命令

Redis之常用命令

  • Sorted-Set存储

Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分 数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然    而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(score) 却是可以重复的。

在Sorted-Set中添加、删除或更新一个成员都是非常快速的操作,其时间复杂度为 集合中成员数量的对数。由于Sorted-Sets中的成员在集合中的位置是有序的,因此,即便是访问位于集合中部的成员也仍然是非常高效的。事实上,Redis所具有的这一特征在很多其它类型的数据库中是很难实现的,换句话说,在该点上要想达到和Redis同样的高效,在其它数据库中进行建模是非常困难的。

例如:游戏排名、微博热点话题等使用场景。

Redis之常用命令

1.zadd key score member score2 member2 … (添加分值)

将所有成员以及该成员的分数存放到sorted-set中

Redis之常用命令

2.zcard key(获取集合长度)

获取集合中的成员数量

Redis之常用命令

3.zcount key min max(获取min-max之间分数成员)

获取分数在[min,max]之间的成员

Redis之常用命令

4.zincrby key increment member(+ X = socre)

设置指定成员的增加的分数

Redis之常用命令

5.zrange key start end [withscores] (查看列表(含分数))

获取集合中脚标为start-end的成员,[withscores]参数表明返回的成员包含其分数

Redis之常用命令

6.zrevrange key start stop [withscores](分数从高至低排列)

按照分数从高至低排列,返回索引在start-stop之间的元素

Redis之常用命令

7.zrangebyscore key min max [withscores] [limit offset count](分数从低至高排列)

返回分数在[min,max]的成员并按照分数从低到高排序。[withscores]:显示分数;[limit offset count]:offset,表明从脚标为offset的元素开始并返回count个成员

Redis之常用命令

Redis之常用命令

8.zrank key member(返回某成员的位置)

返回成员在集合中的位置

Redis之常用命令

9.zrem key member[member…](删除成员)

移除集合中指定的成员,可以指定多个成员

Redis之常用命令

10.zscore key member(获取某成员分数)

返回指定成员的分数

Redis之常用命令

  • hash存储

Redis中的Hashes类型可以看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果 Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash    可以存储4294967295个键值对。

Redis之常用命令

1.hset key field value(设值一个键值对)

为指定的key设定field/value对(键值对)

Redis之常用命令

2.hgetall key(获取所有键值对)

获取key中的所有filed-vaule

Redis之常用命令

3.hget key field(获取一个键值对)

返回指定的key中的field的值

Redis之常用命令

4.hmset key fields(设值多个键值对)

设置key中的多个filed/value

Redis之常用命令

5.hmget key fileds(获取多个键值对)

获取key中的多个filed的值

Redis之常用命令

6.hexists key field(判断field是否存在)

判断指定的key中的filed是否存在

Redis之常用命令

7.hlen key(获取field数量)

获取key所包含的field的数量

Redis之常用命令

8.hincrby key field increment(num +  X)

设置key中filed的值增加increment,如:age增加20

Redis之常用命令

9.hdel key field{field...}(删除一个或多个键值对)

可以删除一个或多个键值对,返回值是被删除的字段个数

Redis之常用命令

  • Key通用操作 

keys pattern

获取所有与pattern匹配的key,返回所有与该key匹配的keys。* 表示任意一个或多个字符,?表示任意一个字符

Redis之常用命令

del key1 key2 key3 ....

删除指定key 

Redis之常用命令

exists key

判断key是否存在,1代表存在,0代表不存在

Redis之常用命令

rename key newkey

为当前key重命名

Redis之常用命令

expire key

设置过期时间,单位:秒

Redis之常用命令

ttl key

获取该key所剩的超时时间,如果没有设置超时,返回-1。如果返回-2表示超时不存在

Redis之常用命令

type key

获取指定key的类型。该命令将以字符串的格式返回,返回的字符串为string、list、set、hash和zset,如果key不存在返回none

Redis之常用命令