一、Set数据类型相关操作

Redis 的 set 是 string 类型的无序集合。

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

格式:SADD key number [member ...] 

redis返回nil redis sadd返回值_应用场景

(2)SCARD :返回key对应的集合中的元素数量。

格式:SCARD key

redis返回nil redis sadd返回值_Redis_02

(3)SDIFF:返回一个集合的全部成员,该集合是第一个Key对应的集合和后面key对应的集合的差集

格式: SDIFF key [key ...]

 

redis返回nil redis sadd返回值_Redis_03

(4)SDIFFSTORE:和SDIFF类似,但结果保存到destination集合而不是简单返回结果集;destination如果已存在,则覆盖

格式:SDIFFSTORE destionation key [key ...] 

redis返回nil redis sadd返回值_应用场景_04

(5)SINTER:返回一个集合的全部成员,该集合是所有给定集合的交集;不存在的key被视为空集

格式:SINTER key [key ...] 

redis返回nil redis sadd返回值_数据库_05

(6)SINTERSTORE:和SINTER类似,但结果保存早destination集合而不是简单返回结果集;如果destination已存在,则覆盖;destination可以是key本身

格式:SINTERSTORE destination key [key ...]

redis返回nil redis sadd返回值_应用场景_06

(7)SISMEMBER:判断member元素是否key的成员,0表示不是,1表示是 

格式:SISMEMBER key member 

redis返回nil redis sadd返回值_数据库_07

(8)SMEMBERS:返回集合key中的所有成员;不存在的key被视为空集

格式:SMEMBERS key 

redis返回nil redis sadd返回值_Redis_08

(9)SMOVE:原子性地将member元素从source集合移动到destination集合;source集合中不包含member元素,SMOVE命令不执行任何操作,仅返回0;destination中已包含member元素,SMOVE命令只是简单做source集合的member元素移除

格式: SMOVE source desination member

redis返回nil redis sadd返回值_Redis_09

(10)SPOP:移除并返回集合中的一个随机元素,如果count不指定那么随机返回一个随机元素;count为正数且小于集合元素数量,那么返回一个count个元素的数组且数组中的元素各不相同;count为正数且大于等于集合元素数量,那么返回整个集合;count为负数那么命令返回一个数组,数组中的元素可能重复多次,数量为count的绝对值。

格式:SPOP key [count]

redis返回nil redis sadd返回值_应用场景_10

(11)SRANDMEMBER:如果count不指定,那么返回集合中的一个随机元素;count同上。

格式:SRANDMEMBER key [count]

redis返回nil redis sadd返回值_应用场景_11

(12)SREM:移除集合key中的一个或多个member元素,不存在的member将被忽略

 格式:SREM key member [member ...]

redis返回nil redis sadd返回值_Redis_12

(13)SUNION:返回一个集合的全部成员,该集合是所有给定集合的并集;不存在的key被视为空集

格式:SUNION key [key ...]

redis返回nil redis sadd返回值_Redis_13

(14)SUNIONSTORE:类似SUNION,但结果保存到destination集合而不是简单返回结果集;destination已存在,覆盖旧值;destination可以是key本身。

格式:SUNIONSTORE destination key [key ...]

redis返回nil redis sadd返回值_Redis_14

二、SortedSet数据结构相关操作

    zset(sorted set 有序集合),和上面的set 数据类型一样,也是 string 类型元素的集合,但是它是有序的。

(1)ZADD:将一个或多个member元素及其score值加入有序集key中;如果member已经是有序集的成员,那么更新member对应的score并重新插入member保证member在正确的位置上;score可以是整数值或双精度浮点数。

格式:ZADD key score member [[score member] [score member] ...]

redis返回nil redis sadd返回值_数据库_15

(2)ZCARD:返回有序集key的元素个数

格式:ZCARD key 

redis返回nil redis sadd返回值_应用场景_16

(3)ZCOUNT :返回有序集key中,score值>=min且<=max的成员的数量

格式:ZCOUNT key min max 

redis返回nil redis sadd返回值_数据库_17

(4)ZRANGE :返回有序集key中指定区间内的成员,成员位置按score从小到大排序;具有相同score值的成员按字典序排列;需要成员按score从大到小排列,使用ZREVRANGE命令;下标参数start和stop都以0为底,也可以用负数,-1表示最后一个成员,-2表示倒数第二个成员;可通过WITHSCORES选项让成员和它的score值一并返回。

格式:ZRANGE key start stop [WITHSCORES] 

redis返回nil redis sadd返回值_应用场景_18

redis返回nil redis sadd返回值_数据库_19

(5)ZRANK:返回有序集key中成员member的排名,有序集成员按score值从小到大排列;排名以0为底,即score最小的成员排名为0;ZREVRANK命令可将成员按score值从大到小排名。

格式:ZRANK key number 

redis返回nil redis sadd返回值_数据库_20

redis返回nil redis sadd返回值_应用场景_21

(6)ZREM:移除有序集key中的一个或多个成员,不存在的成员将被忽略;当key存在但不是有序集时,返回错误 。

格式:ZREM key member [member ...] 

redis返回nil redis sadd返回值_数据库_22

(7)ZREMRANGEBYRANK:移除有序集key中指定排名区间内的所有成员 

格式:ZREMRANGEBYRANK key start stop

redis返回nil redis sadd返回值_数据库_23

(8)ZREMRANGEBYSCORE:移除有序集key中,所有score值>=min且<=max之间的成员 

格式:ZREMRANGEBYSCORE key min max 

redis返回nil redis sadd返回值_Redis_24

三、Redis的Key相关操作

(1)DEL:删除给定的一个或多个key;不存在的Key将被忽略。

格式:DEL key [key ...]

redis返回nil redis sadd返回值_应用场景_25

(2)EXISTS:检查给定key是否存在

格式:EXISTS key

redis返回nil redis sadd返回值_应用场景_26

(3)EXPIRE:为给定key设置生存时间,key过期时它会被自动删除;对一个已经指定生存时间的Key设置执行EXPIRE,新的值会代替旧的值。

格式:EXPIRE key seconds

redis返回nil redis sadd返回值_数据库_27

(4)EXPIREAT:同EXPIRE,但此命令指定的是UNIX时间戳,单位为秒

格式:EXPIRE key timestamp

redis返回nil redis sadd返回值_数据库_28

(5)KEYS:查找所有符合给定模式pattern的key,下面举一下例子

  • KEYS *匹配所有key
  • KEYS h?llo匹配hello、hallo、hxllo等
  • KEYS h*llo匹配hllo、heeeeello等
  • KEYS h[ae]llo匹配hello和hallo
  • 特殊符号想当做查找内容经的使用\

格式:KEYS pattern

redis返回nil redis sadd返回值_数据库_29

    这里特别注意KEYS命令,虽然KEYS命令速度非常快,但是当Redis中百万、千万甚至过亿数据的时候,扫描所有Redis的Key,速度仍然会下降,由于Redis是单线程模型,这将导致后面的命令阻塞直到KEYS命令执行完。因此当Redis中存储的数据达到了一定量级的时候,必须警惕KEYS造成Redis整体性能下降。

(6)MIGRATE :原子性地将key从当前实例传送到目标实例指定的数据库上;原数据库Key删除,新数据库Key增加;阻塞进行迁移的两个实例,直到迁移成功、迁移失败、等待超时三个之一发生。

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

[COPY] :不移除源实例上的 key 

[REPLACE] :替换目标实例上已存在的 key 

启动第二个redis

redis返回nil redis sadd返回值_Redis_30

redis返回nil redis sadd返回值_应用场景_31

redis返回nil redis sadd返回值_应用场景_32

(7)MOVE:将当前数据库的key移动到给定数据库的db中;执行成功的条件为当前数据库有key,给定数据库没有key

格式:MOVE key db 

redis返回nil redis sadd返回值_应用场景_33

(8)PERSIST:移除给定key的生存时间,将key变为持久的

格式:PERSIST key

redis返回nil redis sadd返回值_Redis_34

(9)RANDOMKEY:从当前数据库随机返回且不删除一个key,

格式:RANDOMKEY 

redis返回nil redis sadd返回值_Redis_35

(10)RENAME:将key改名为newkey;当key和newkey相同或key不存在,报错;newkey已存在,RENAME将覆盖旧值。

格式:RENAME key newkey

redis返回nil redis sadd返回值_Redis_36

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

格式:TTL key

redis返回nil redis sadd返回值_Redis_37

(12)PTTL:以毫秒为单位,返回给定的key剩余生存时间

格式:PTTL key

redis返回nil redis sadd返回值_数据库_38

(13)TYPE:返回key锁存储的值的类型

格式:TYPE key

redis返回nil redis sadd返回值_Redis_39

四、各种数据类型所对应的应用场景

1.String类型的应用场景

   String是最常用的一种数据类型,普通的key/value存储.

2.list类型的应用场景

   比较适用于列表式存储且顺序相对比较固定,例如:

省份、城市列表

品牌、厂商、车系、车型等列表

拆车坊专题列表...

3.set类型的应用场景

   Set对外提供的功能与list类似,当需要存储一个列表数据,又不希望出现重复数据时,可选用set

4.zset(sorted set)类型的应用场景

zset的使用场景与set类似,区别是set不是自动有序的,而zset可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序.当你需要一个有序的并且不重复的集合列表,那么可以选择zset数据结构。例如:

根据PV排序的热门车系车型列表

根据时间排序的新闻列表

5.hash类型的应用场景

类似于表记录的存储

页面视图所需数据的存储

 如果本文对您有很大的帮助,还请点赞关注一下。