redis--(1)redis的常用数据类型

本文详细介绍了Redis中五种主要数据结构:String、List、Set、Sorted Set及Hash的操作命令,包括各种命令的使用场景及返回值说明,帮助读者快速掌握Redis的基本使用。

redis作为一个性能优越的键值(key-value)型数据库,支持多种数据结构。有strings–list–set–sorts set–hash几种。有必要了解常用操作。

strings

Strings:字符串是二进制安全的,这意味着一个一个redis的字符串能包含任意类型的数据,比如:JPEG格式的图片或者一个序列化的数组或对象。一个字符串最多512M内容。

SET key value [EX #] [NX|XX]  //设定键-值。NX表示键不存在才设定值。如果存在则不设定。XX相反。EX后加过期时间。还有PX类型,毫秒。
GET
INCR   //加或减key中的数字,只能对整数操作。
DECR
EXIST

SETEX key seconds value

将值value关联到key,并将 key 的生存时间设 为 seconds (以秒为单位)。如果 key 已经存在, SETEX 命令将覆写旧值。
返回值: 设置成功时返回 OK 。 当 seconds 参数不合法时,返回一个错误。

SETRANGE key offset value 

用 value 参数覆写(overwrite)给定 key 所储存的 字符串值,从偏移量 offset 开始。 不存在的 key 当作空白字符串处理。
- 返回值: 被 SETRANGE 修改之后,字符串的长度。

MSET key value [key value ...]

同时设置一个或多个 key-value 对。 如果某个给定 key 已经存在,那么 MSET 会用新 值覆盖原来的旧值,如果这不是你所希望的效果, 请考虑使用 MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。
- 返回值: 总是返回 OK (因为 MSET 不可能失败)

GETRANGE key start end 

返回 key 中字符串值的子字符串,字符串的截取范 围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。 负数偏移量表示从字符串最后开始计数, -1 表示 最后一个字符, -2 表示倒数第二个,以此类推。
- 返回值: 截取得出的子字符串。

APPEND key value 

如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。 如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
- 返回值: 追加 value 之后, key 中字符串的长度

lists

Lists:键指向一个容器。可以在左右进行添加字串,主要功能是push.pop.获取一个范围的所有值,等等。list可当成是lists或是栈。

LPUSH  //`LPUSH SS  MON  `  定义了一个list,或者左侧增加值。  返回list的长度。
RPUSH   //这是右侧增加值,上面是右侧增加。
LPOP    //左弹。返回的是被弹出的元素。弹完就没了。不存在则返会null。
RPOP  //右弹。
LINDEX
LSET  //LSET key index value将列表 key 下标为 index 的元素的值设置为 value 。 当 index 参数超出范围,或对一个空列表( key 不 存在)进行 LSET 时,返回一个错误。 返回值:操作成功返回OK,否则返回错误信息。
LINSERT //LINSERT key BEFORE|AFTER pivot value  将值value插入到列表key中,  位于值 pivot 之前或之 后。 当 pivot 不存在于列表 key 时,不执行任何操作。 当 key 不存在时, key 被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。 

返回值:
如果命令执行成功,返回插入操作完成之后,列表 的长度。 如果没有找到 pivot ,返回 -1 。 如果 key 不存在或为空列表,返回 0 。

LTRIM //LTRIM key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区 间内的元素,不在指定区间之内的元素都将被删除。 下标(index)参数 start 和 stop 都以 0 为底,也就是说, 以 0 表示列表的第一个元素,以 1 表示列表的第二个元素 ,以此类推。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素, 以此类推。当 key 不是列表类型时,返回一个错误。

返回值: 命令执行成功时,返回 ok 。

RPOPLPUSH //RPOPLPUSH source destination 命令 RPOPLPUSH 在一个原子时间内,执行两个动作:1 将列表 source 中的最后一个元素(尾元素)弹出,并返回给 客户端。2.将 source 弹出的元素插入到列表 destination , 作为 destination 列表的的头元素。 如果 source 不存在,值 nil 被返回,并且不执行其他动作。 如果 source 和 destination 相同,则列表中的表尾元素 被移动到表头,并返回该元素,可以把这种特殊情况视作 列表的旋转(rotation)操作。
返回值: 被弹出的元素。

sets

Sets:最多40亿元素。

SADD   //创建新的集合。`SADD w1 xxx xxx xx`。也可添加新的元素,重复元素会被忽略。返回被添加到集合中的新元素的数量,不包括被忽略的元素。
SINTER      //插入。
SUNION  //SUNION key [key]  返回一个集合的全部成员的列表。
SPOP //随机弹出。如果不弹出只是查看的话,使用SRANDMEMBER命令。返回值:被移除的随机元素。或是空。
SISMEMBER   //查看某一元素在不在列表中。
SINTER //求交集。
SDIFF//SDIFF key [key]  返回一个集合的全部成员,该集合是所有给定集合之间的差积。返回值:一个包含差积成员的列表。
SMOVE sources destination member  将member元素从source集合移动到destination集合。源集合没有的元素不执行操作,否则执行。源和目的都有该元素,则源会被移除。元素不存在返回错误。成功返回1,如果不是source的元素则返回0.

sorted sets

Sorted Sets: //有序集合。

ZADD  //定义或增加引索。ZADD key score member [[score member] [score member] ...]
ZRANGE  //指明起始和结束索引。
ZCARD //定义
ZRANK    //ZRANK key member   返回成员的排名。其中有序集成员按照score值递增以排名为0。使用ZREVRANK命令可以获得成员按score值递减(从大到小)排列的排名。排名以 0 为底,也就是说, score 值最小的成员排名 为 0 。使用 ZREVRANK 命令可以获得成员按 score 值递减(从大到小)排列的排名。

返回值:如果member是有序集key的成员,返返回 member 的 排名。 如果 member 不是有序集 key 的成员,返回nil
ZINCRBY //ZINCRBY key increment member 为集合 key 的成员member的score 值加上增量 increment 。可以通过传递一个负数值 increment ,让 score 减去相应的值,比如 ZINCRBY key -5 member , 就是让 member 的 score 值减去 5 。 当 key 不存在,或 member 不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。
当key不是有序集类型时,返回一个错误。score值可以是整数值或双精度浮点数。
返回值:member成员的新score值,以字符串形式表示。
ZREMRANGEBYRANK key start stop //移除有序集 key 中,指定排名(rank)区间内的所有成员。 区间分别以下标参数 start 和 stop 指出,包含 start 和 stop 在内。 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表 示有序集第一个成员,以 1 表示有序集第二个成员,以此 类推。 你也可以使用负数下标,以 -1 表示最后一个成员, -2 表 示倒数第二个成员,以此类推。 返回值: 被移除成员的数量。

ZADD weekday1 1 mon 2 tue  3  web     //定义一个有序集合。或者添加。或者更新集合。返回被成功添加的新成员的数量,不包括被更新的,已存在的成员。
ZRANGE  weekday1    //返回 integer  3 
ZRANGE weekday1 tue  //返回 integer 1
ZSCORE  weekday1   1  //根据元素返回SCORE.

hash

Hash:关联数组,2.0引入。Redis hash是一个string类型的field和valu e的映射表。 它的添加、 删除操作都是0(1)( 平均)。 hash特别适合用于存储对象。 相较 于将对象的每个字段存成单个string类型。 将一个对象存储在hash类型中会占用更少的 内存, 并且可以更方便的存取整个对象。

 HSET    //HSET key field value 将哈希表 key 中的域 field 的值设为 value 。 如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作。 如果域 field 已经存在于哈希表中,旧值将被覆盖。

返回值: 如果 field 是哈希表中的一个新建域,并且值 设置成功,返回 1 。 如果哈希表中域 field 已经存在且旧值已被新 值覆盖,返回 0 。

  HMSET     //HMSET key field value [field value ...] 同时将多个 field-value (域-值)对设置到哈希表 key 中。 此命令会覆盖哈希表中已存在的域。 如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。

返回值: 如果命令执行成功,返回 OK 。 当 key 不是哈希表(hash)类型时,返回一个错误。

  HINCRBY     //HINCRBY key field increment   为哈希表 key 中的域 field 的值加上增量 increment 。 增量也可以为负数,相当于对给定域进行减法操作。 如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。 如果域 field 不存在,那么在执行命令前,域的值被初始 化为 0 。 对一个储存字符串值的域 field 执行 HINCRBY 命令将造 成一个错误。 

返回值: 执行 HINCRBY 命令之后,哈希表 key 中域 field 的值

HMGET  //HMGET key field [field ...] 返回哈希表 key 中,一个或多个给定域的值。 如果给定的域不存在于哈希表,那么返回一个 nil 值。

返回值:一个包含多个给定域的关联值的表,表值的排列顺序和给定参数的请求顺序一样。

 HSETNX    //

HGET    //取值
HKEYS    //  返回哈希表Key中的所有域。

返回值:一个包含哈希表中所有域的表。 当key不存在时,返回一个空表。
HVALS //
HDEL //删除

hash h1 a mon  //增加键值
hash h1 b  tue  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值