Redis第十五讲 Redis常用数据结构的基本操作

文章详细列举了Redis中对key的各种操作,包括查看、设置、删除及过期时间管理等。此外,还介绍了哈希表、列表、集合和有序集合的相关操作命令,如HGET、HSET、LPOP、RPUSH、SADD等,涵盖了数据的增删查改和集合运算。
摘要由CSDN通过智能技术生成

String

对key的操作命令

keys * 						//查看当前库所有key
exists key 					//判断某个key是否存在
type key   					//查看key是什么类型
del key 					//删除指定的key数据
expire key 10 				//10秒钟:为给定的key设置过期时间
ttl key						//查看还有多少秒过期,-1表示永不过期,-2表示已过期。
select 1 					//选择1号库
dbsize                      //查看当前数据库的key的数量
flushdb						//清空当前库
flushall					//通杀全部库

set操作

set <key>   <value>			//添加键值对

*NX:			当数据库中key不存在时,可以将key-value添加数据库
*XX:			当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥
*EX:			key的超时秒数
*PX:			key的超时毫秒数,与EX互斥
mset  <key1><value1><key2><value2>...    //同时设置一个或多个key-value键值对
msetnx <key1><value1><key2><value2>....  //同时设置一个或多个key-value对,当且仅当所有给定key都不存在。
setex <key><过期时间><value>       		  //设置键值的同时,设置过期时间,单位秒。

get操作

get <key>							//查询对应键值
mget <key1><key2><key3>....  		 //同时获取一个或多个 value

其他:

get k1
append <key>  <value> 			//将给定的<value>追加到原值的末尾 
strlen <key>					//获得值的长度
incr <key>						//将key中存储的数字值增1.只能对数字值操作,如果为空,新增值为1
decr <key>						//将key中存储的数字值减1,只能对数字值操作,如果为空,新增值为-1
incrby / decrby <key> <步长> 	//将key中存储的数字值增减,自定义步长。
setrange <key> <起始位置>  <value>   //用覆写所存储的字符串值,从<起始位置>开始(索引从0开始)
getrange <key><起始位置><结束位置>    //获得值的范围,类似java中的substring,前包,后包
getset <key><value>					//以新换旧,设置了新值同时获得旧值。

Hash

HGET

命令语法:HGET key field
         命令用途:返回哈希表键 key 中给定域 field 的值。
         时间复杂度:O(1) 

HSET

命令语法:HSET key field value
         命令用途:将哈希表键 key 中的域 field 的值设为 value 。
         时间复杂度:O(1) 

HSETNX

命令语法:HSETNX key field value
         命令用途:当且仅当键 key 中的域 field  不存在时,将域 field  的值设为 value 。
         时间复杂度:O(1) 

HLEN

命令语法:HLEN key
           命令用途:返回哈希表键 key 中域的数量。
           时间复杂度:O(1) 

HINCRBY

命令语法:HINCRBY key field increment
         命令用途:将哈希表键 key 中的域 field中储存的数字值增加 increment 。
         时间复杂度:O(1) 

HINCRBYFLOAT

命令语法:HINCRBYFLOAT key field increment
         命令用途:为键 key 中的域 field 中储存的值加上浮点数增量 increment 。
         时间复杂度:O(1) 

HMGET

命令语法:HMGET key field1 [field2 ...]
         命令用途:返回哈希表键 key 中,一个或多个给定域的值。
         时间复杂度:O(N)N 为给定域的数量。 

HMSET

命令语法:HMSET key field1 value1 [field2 value2 ...]
         命令用途:同时为哈希表键 key 设置一个或多个 key-value 键值对。
         时间复杂度:O(N)N 为 field-value 对的数量。 

HKEYS

命令语法:HKEYS key
           命令用途:返回哈希表键 key 中的所有域。
           时间复杂度:O(N)N 为哈希表中域的数量。 

HVALS

命令语法:HVALS key
         命令用途:返回哈希表键 key 中所有域的值。
         时间复杂度:O(N)N 为哈希表中域的数量。 

HGETALL

命令语法:HGETALL key
         命令用途:返回哈希表键 key 中,所有的域和值。
         时间复杂度:O(N)N 为哈希表中域的数量。 

HEXISTS

命令语法:HEXISTS key field
         命令用途:检验哈希表键 key 中,给定域 field 是否存在。
         时间复杂度:O(1) 

HDEL

命令语法:HDEL key field1 [field2 ...]
         命令用途:删除哈希表键 key 中的一个或多个域
         时间复杂度:O(N)N 为要删除的域的数量。

HSCAN

命令语法:HSCAN key cursor [MATCH pattern] [COUNT count]
         命令用途:迭代哈希表键 key 中的键值对。
         命令参数: 
MATCH pattern:只返回和给定模式 pattern 相匹配的域。 
COUNT count:每次迭代从数据集返回 count 个元素。  
时间复杂度: O(N)N 为返回元素的数量。 
hscan book 0 match *:price count 2 // 该命令通常会无视 COUNT 选项指定的值

List

BLPOP

BLPOP key1 timeout
移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

BPROP

BPROP key1[key2] timeout
移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

BRPOPLPUSH

BRPOPLPUSH source destination timeout
从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;
如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

LINDEX

LINDEX key index
通过索引获取列表中的元素

LINSERT

LINSERT key BEFORE|AFTER pivot value
在列表的元素前或者后插入元素

LLEN

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

LPOP

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

LPUSH

LPUSH key value1 [value2]

将一个或多个值 value 插入到列表 key 的表头
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头:
比如说,对空列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a 
这等同于原子性地执行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三个命令。
如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。
当 key 存在但不是列表类型时,返回一个错误。

LPUSHX

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

LRANGE

LRANGE key start stop
返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。

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

LREM

LREM key count value

根据参数 count 的值,移除列表中与参数 value 相等的元素。

 count 的值可以是以下几种:
 count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
 count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
 count = 0 : 移除表中所有与 value 相等的值。

LSET

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

LTRIM

LTRIM key start stop
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,
不在指定区间之内的元素都将被删除。

 举个例子,执行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三个元素,其余元素全部删除。
 下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1
 表示列表的第二个元素,以此类推。
 你也可以使用负数下标,以 -1 表示列表的最后一个元素,
  -2 表示列表的倒数第二个元素,以此类推。
 当 key 不是列表类型时,返回一个错误。

RPOP

RPOP key
移除并返回列表 key 的尾元素

RPOPLPUSH

RPOPLPUSH source destination
命令 RPOPLPUSH 在一个原子时间内,执行以下两个动作:

将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。
将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。

 举个例子,你有两个列表 source 和 destination , source 列表有元素 a, b, c , destination
 列表有元素 x, y, z ,执行 RPOPLPUSH source destination 之后, source 列表包含元素 a, b
 , destination 列表包含元素 c, x, y, z ,并且元素 c 会被返回给客户端。
 如果 source 不存在,值 nil 被返回,并且不执行其他动作。
 如果 source 和 destination
 相同,则列表中的表尾元素被移动到表头,并返回该元素,
 可以把这种特殊情况视作列表的旋转(rotation)操作。

RPUSH

RPUSH key value1 [value2]
将一个或多个值 value 插入到列表 key 的表尾(最右边)。
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:
比如对一个空列表 mylist 执行 
RPUSH mylist a b c ,得出的结果列表为 a b c ,
等同于执行命令 RPUSH mylist a 、 RPUSH mylist b 、 RPUSH mylist c 。
 如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。
 当 key 存在但不是列表类型时,返回一个错误。

RPUSHX

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

Set

SADD

SADD key member1 [member2]  添加成员
向集合添加一个或多个成员:sadd 命令将一个或多个成员元素加入到集合中,
已经存在于集合的成员元素将被忽略。
假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。
当集合 key 不是集合类型时,返回一个错误。
返回值:被添加到集合中的新元素的数量,不包括被忽略的元素。

SMEMBERS

SMEMBERS key     查询集合的成员
返回集合中的所有成员:smembers 命令返回集合中的所有的成员。 不存在的集合 key 被视为空集合。
返回值:集合中的所有成员

SCARD

SCARD key      查询集合成员数量
获取集合的成员数:
返回值:集合的数量。 当集合 key 不存在时,返回 0

SISMEMBER

SISMEMBER key member  判断某元素是否存在
判断 member 元素是否是集合 key 的成员
返回值:如果成员元素是集合的成员,返回 1 。 
如果成员元素不是集合的成员,或 key 不存在,返回 0

SRANDMEMBER

SRANDMEMBER key [count]      随机返回集合里面的成员
返回集合中一个或多个随机数
返回值:只提供集合 key 参数时,返回一个元素;如果集合为空,返回 nil 。
 如果提供了 count 参数,那么返回一个数组;如果集合为空,返回空数组。

SMOVE

SMOVE source destination member  将某元素从一个集合移动到另外一个集合
将 member 元素从 source 集合移动到 destination 集合。
返回值:如果成员元素被成功移除,返回 1 。
 如果成员元素不是 source 集合的成员,并且没有任何操作对 destination 集合执行,那么返回 0

SPOP

SPOP key		  随机删除一个元素
移除并返回集合中的一个随机元素。
返回值:被移除的随机元素。 当集合不存在或是空集时,返回 nil 。

SREM

SREM key member1 [member2]    删除指定元素
移除集合中一个或多个成员。
返回值:被成功移除的元素的数量,不包括被忽略的元素

SDIFF

SDIFF key1 [key2]  求集合差集

返回给定所有集合的差集
返回值:包含差集成员的列表。

Redis sdiff 命令返回给定集合之间的差集。不存在的集合 key 将视为空集。
差集的结果来自前面的 FIRST_KEY ,而不是后面的 OTHER_KEY1,
也不是整个 FIRST_KEY OTHER_KEY1…OTHER_KEYN 的差集。

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SDIFF key1 key2 key3 = {b,d}

SDIFFSTORE

SDIFFSTORE destination key1 [key2]      差集存储到set
返回给定所有集合的差集并存储在 destination 中.
Redis sdiffstore 命令将给定集合之间的差集存储在指定的集合中。
如果指定的集合 key 已存在,则会被覆盖。

SINTER

SINTER key1 [key2]       交集
返回给定所有集合的交集
Redis sinter 命令返回给定所有给定集合的交集。 不存在的集合 key 被视为空集。 
当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
返回值:交集成员的列表。

SINTERSTORE

SINTERSTORE destination key1 [key2]   交集存储到set
返回给定所有集合的交集并存储在 destination 中.
Redis sinterstore 命令将给定集合之间的交集存储在指定的集合中。
如果指定的集合已经存在,则将其覆盖。
返回值:返回存储交集的集合的元素数量。

SUNION

SUNION key1 [key2]			并集
返回所有给定集合的并集
Redis sunion 命令返回给定集合的并集。不存在的集合 key 被视为空集。
返回值:并集成员的列表

SUNIONSTORE

SUNIONSTORE destination key1 [key2]  并集存储到set
所有给定集合的并集存储在 destination 集合中.
Redis sunionstore 命令将给定集合的并集存储在指定的集合 destination 中。
如果 destination 已经存在,则将其覆盖。
返回值:结果集中的元素数量。

Zset

zadd

zadd key score member [score member…]
将一个或多个 member 元素及其 score 值加入到有序集合 key 中,
如果 member存在集合中,则更新值;score 可以是整数或浮点数.

zrem

zrem key member [member…]

删除有序集合 key 中的一个或多个成员,不存在的成员被忽略,
返回值:被成功删除的成员数量,不包括被忽略的成员。

zcard

zcard key

获取有序集 key 的元素成员的个数

返回值:key 存在返回集合元素的个数, key 不存在,返回 0

zrange

zrange key start end

查询有序集合,指定区间的内的元素。集合成员按 score 值从小到大来排序。
 start,stop 都是从 0 开始。0 是第一个元素,1 是第二个元素,依次类推。
 以 -1 表示最后一个成员,-2 表示倒数第二个成员。
 WITHSCORES 选项让 score 和 value 一同返回。返回值:自定区间的成员集合.

zrevrange

zrevrange key start stop [WITHSCORES]

返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减(从大到小) 来排列。
其它同 zrange 命令。

zrangebyscore

zrangebyscore key mix max

获取有序集 key 中,所有 score 值介于 min 和 max 之间(包括 min 和 max)的成员,有序成员是按递增(从小到大)排序。

min ,max 是包括在内 , 使用符号 ( 表示不包括。 min , max 可以使用 -inf ,+inf 表示最小和最大.

limit 用来限制返回结果的数量和区间。

withscores 显 示 score 和 value

返回值:指定区间的集合数据

zrevrangebyscore

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

返回有序集 key 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。
有序集成员按 score 值递减(从大到小)的次序排列。其他同 zrangebyscore.

zcount

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


zrank

zrank key member

在获取指定有序集合中指定元素的排名(排名从0开始)

zscore

zscore key member

获取指定有序集合中指定元素的分数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员路同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值