redis数据类型strings的详细介绍-创新互联

本篇内容主要讲解“redis数据类型strings的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“redis数据类型strings的详细介绍”吧!

公司主营业务:网站建设、网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出谷城免费做网站回馈大家。

1.     String(字符串)

string是最简单的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value,其上支持的操作与Memcached的操作类似。但它的功能更丰富。

redis采用结构sdshdr和sds封装了字符串,字符串相关的操作实现在源文件sds.h/sds.c中。在Redis中字符串类型的Value最多可以容纳的数据长度是512M

在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等

数据结构定义如下:

typedefchar*sds;

structsdshdr{

   longlen;

   longfree;

   charbuf[];

};

1.1. SET

Set key value [EX seconds] [PXmilliseconds] [NX|XX]

将字符串值value关联到key。如果key已经持有其他值,SET 就覆写旧值,无视类型。对于某个原本带有生存时间(TTL)的键来说,当 SET 命令成功在这个键上执行时, 这个键原有的 TTL 将被清除。

可选参数

从 Redis 2.6.12 版本开始,SET 命令的行为可以通过一系列参数来修改:

  • EXsecond:设置键的过期时间为 second秒。 SET key value EX second效果等同于SETEXkey second value。

  • PXmillisecond:设置键的过期时间为 millisecond毫秒。 SET key value PX millisecond效果等同于PSETEXkey millisecond value。

  • NX:只在键不存在时,才对键进行设置操作。SETkey value NX效果等同于 SETNX key value。

  • XX:只在键已经存在时,才对键进行设置操作。

#赋值与取值

127.0.0.1:6379> set dbredis

OK

127.0.0.1:6379> get db

"redis"

#使用ex选项

127.0.0.1:6379> set dbredis ex 20

OK

127.0.0.1:6379> ttl db

(integer) 16

127.0.0.1:6379> get db

"redis"

127.0.0.1:6379> ttl db

(integer) 5

127.0.0.1:6379> get db

"redis"

127.0.0.1:6379> get db

"redis"

127.0.0.1:6379> get db

(nil)

#使用 PX 选项

127.0.0.1:6379>set db redis px 20000

OK

127.0.0.1:6379>PTTL db

(integer)15674

127.0.0.1:6379>PTTL db

(integer)8974

127.0.0.1:6379>PTTL db

(integer)8045

127.0.0.1:6379>get db

"redis"

127.0.0.1:6379>PTTL db

(integer)2482

127.0.0.1:6379>get db

"redis"

127.0.0.1:6379>get db

(nil)

#使用 NX 选项

127.0.0.1:6379>set db oracle NX

OK

127.0.0.1:6379>get db

"oracle"

127.0.0.1:6379>set db redis NX ---键存在,失败

(nil)

127.0.0.1:6379>get db

"oracle"

#使用 XX 选项

127.0.0.1:6379>exists name

(integer)0

127.0.0.1:6379>get name

(nil)

127.0.0.1:6379>set name hunt1574 XX ---键不存在,失败

(nil)

127.0.0.1:6379>set name redis

OK

127.0.0.1:6379>set name hunt1574 XX

OK

127.0.0.1:6379>get name

"hunt1574"

1.2. SETEX

Setex key seconds value

将值 value 关联到 key ,并将key 的生存时间设为 seconds (以秒为单位)。

如果 key 已经存在, SETEX 命令将覆写旧值。

这个命令类似于以下两个命令:

SETkey value

EXPIREkey seconds # 设置生存时间

不同之处是, SETEX 是一个原子性(atomic)操作,关联值和设置生存时间两个动作会在同一时间内完成,该命令在 Redis 用作缓存时,非常实用。

#key不存在赋值

127.0.0.1:6379>EXISTS user

(integer)0

127.0.0.1:6379>setex user 30 root

OK

127.0.0.1:6379>get user

"root"

127.0.0.1:6379>ttl user

(integer)15

127.0.0.1:6379>get user

(nil)

#key存在赋值

127.0.0.1:6379>setex user 20 admin

OK

127.0.0.1:6379>get user

"admin"

127.0.0.1:6379>ttl user

(integer)14

127.0.0.1:6379>get user

(nil)

1.3. SETNX

SETNX key value

将 key 的值设为 value ,当且仅当 key 不存在。

若给定的 key 已经存在,则 SETNX 不做任何动作。

SETNX是『SET if Not eXists』(如果不存在,则 SET)的简写。

#赋值与取值

127.0.0.1:6379>EXISTS www

(integer)0

127.0.0.1:6379>setnx www code.google.com

(integer)1

127.0.0.1:6379>setnx www redis.io

(integer)0

127.0.0.1:6379>get www

"code.google.com"

127.0.0.1:6379>

1.4. SETRANGE

SETRANGE key offset value

用 value 参数覆写(overwrite)给定offset的 key 所储存的字符串值

127.0.0.1:6379>set www code.google.com

OK

127.0.0.1:6379>get www

"code.google.com"

127.0.0.1:6379>SETRANGE www 0 mail

(integer)15

127.0.0.1:6379>get www

"mail.google.com"

127.0.0.1:6379>SETRANGE www 0 gmail

(integer)15

127.0.0.1:6379>get www

"gmailgoogle.com"

1.5. MSET

MSET key value [key value ...]

同时设置一个或多个 key-value 对。

如果某个给定 key 已经存在,那么 MSET 会用新值覆盖原来的旧值,如果这不是你所希望的效果,请考虑使用 MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。

MSET是一个原子性(atomic)操作,所有给定 key 都会在同一时间内被设置,某些给定 key 被更新而另一些给定 key 没有改变的情况,不可能发生。

#赋值与取值

127.0.0.1:6379>mset os "linux" db "redis" date "2015-03-17"

OK

127.0.0.1:6379>mget os db date

1)"linux"

2)"redis"

3)"2015-03-17"

#值覆盖

127.0.0.1:6379>mset os "linux" db "oracle" date "2015-03-17"

OK

127.0.0.1:6379>mget os db date

1)"linux"

2)"oracle"

3)"2015-03-17"

127.0.0.1:6379>

1.6. MSETNX

MSETNX key value [key value ...]

同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

即使只有一个给定 key 已存在,MSETNX 也会拒绝执行所有给定 key 的设置操作。MSETNX是原子性的,因此它可以用作设置多个不同 key 表示不同字段(field)的唯一性逻辑对象(unique logic object),所有字段要么全被设置,要么全不被设置。

#赋值与取值

127.0.0.1:6379>mget os db date

1)"linux"

2)"redis"

3) "2015-03-17"

127.0.0.1:6379>msetnx os "linux" db "oracle" date "2015-03-17"

(integer)0

127.0.0.1:6379>mget os db date

1)"linux"

2)"redis"

3)"2015-03-17"

127.0.0.1:6379>

1.7. GET

GET key

返回 key 所关联的字符串值。

如果 key 不存在那么返回特殊值nil 。

假如 key 储存的值不是字符串类型,返回一个错误,因为 GET 只能用于处理字符串值。

127.0.0.1:6379>set dbname redis

OK

127.0.0.1:6379>get dbname

"redis"

127.0.0.1:6379>get dbversion

(nil)

127.0.0.1:6379>lpush db redis mysql mongodb

(integer)3

127.0.0.1:6379>get db

(error)WRONGTYPE Operation against a key holding the wrong kind of value

1.8. MGET

MGET key [key ...]

返回所有(一个或多个)给定 key 的值。

如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。因此,该命令永不失败。

#赋值与取值

127.0.0.1:6379>set date 2015-03-17

OK

127.0.0.1:6379>set time 10:00

OK

127.0.0.1:6379>mget date time

1)"2015-03-17"

2)"10:00"

127.0.0.1:6379>mget date time week ---week不存在,返回nil

1)"2015-03-17"

2)"10:00"

3)(nil)

1.9. GETRANGE

GETRANGE key startend

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

#赋值与取值

127.0.0.1:6379>set www redis.io

OK

127.0.0.1:6379>GETRANGE www 0 4

"redis"

127.0.0.1:6379>GETRANGE www -2 -1

"io"

127.0.0.1:6379>GETRANGE www -100 -1

"redis.io"

1.10.      GETSET

GETSET key value

将给定 key 的值设为 value ,并返回key 的旧值(old value)。

当 key 存在但不是字符串类型时,返回一个错误。

127.0.0.1:6379>getset dbname mysql

(nil)

127.0.0.1:6379>get dbname

"mysql"

127.0.0.1:6379>getset dbname redis

"mysql"

127.0.0.1:6379>get dbname

"redis"

1.11.      INCR

INCR key

将 key 中储存的数字值增一。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

127.0.0.1:6379>EXISTS pages

(integer)0

127.0.0.1:6379>incr pages

(integer)1

127.0.0.1:6379>get pages

"1"

127.0.0.1:6379>set rows 0

OK

127.0.0.1:6379>incr rows

(integer)1

127.0.0.1:6379>incr rows

(integer)2

127.0.0.1:6379>incr rows

(integer)3

127.0.0.1:6379>get rows

"3"

127.0.0.1:6379>

1.12.      INCRBY

INCRBY keyincrement

将 key 所储存的值加上增量 increment 。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内

#键存在

127.0.0.1:6379>get rows

"3"

127.0.0.1:6379>INCRBY rows 3

(integer)6

127.0.0.1:6379>INCRBY rows 3

(integer)9

127.0.0.1:6379>INCRBY rows 3

(integer)12

#键不存在

127.0.0.1:6379>get num

(nil)

127.0.0.1:6379>INCRBY num -2

(integer)-2

127.0.0.1:6379>INCRBY num -2

(integer)-4

127.0.0.1:6379>INCRBY num -2

(integer)-6

1.13.      INCRBYFLOAT

INCRBYFLOAT keyincrement

为 key 中所储存的值加上浮点数增量 increment 。

如果 key 不存在,那么 INCRBYFLOAT 会先将 key 的值设为 0 ,再执行加法操作。

如果命令执行成功,那么 key 的值会被更新为(执行加法之后的)新值,并且新值会以字符串的形式返回给调用者。

无论是 key 的值,还是增量 increment ,都可以使用像 2.0e7 、 3e5 、 90e-2 那样的指数符号(exponential notation)来表示,但是,执行 INCRBYFLOAT 命令之后的值总是以同样的形式储存,也即是,它们总是由一个数字,一个(可选的)小数点和一个任意位的小数部分组成(比如 3.14 、 69.768 ,诸如此类),小数部分尾随的 0 会被移除,如果有需要的话,还会将浮点数改为整数(比如 3.0 会被保存成 3 )。

127.0.0.1:6379>set price 45.99

OK

127.0.0.1:6379>INCRBYFLOAT price 4.5

"50.49"

127.0.0.1:6379>INCRBYFLOAT price 4.5

"54.99"

127.0.0.1:6379>get num

(nil)

127.0.0.1:6379>INCRBYFLOAT num 5.3

"5.3"

127.0.0.1:6379>INCRBYFLOAT num 5.3

"10.6"

1.14.      DECR

DECR key

将 key 中储存的数字值减一。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

127.0.0.1:6379>set price 398.99

OK

127.0.0.1:6379>decr price

(error)ERR value is not an integer or out of range

127.0.0.1:6379>set pages 98

OK

127.0.0.1:6379>decr pages

(integer)97

127.0.0.1:6379>decr pages

(integer)96

1.15.      DECRBY

DECRBY keydecrement

将 key 所储存的值减去减量 decrement 。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

127.0.0.1:6379>get pages

"96"

127.0.0.1:6379>decrby pages 5

(integer)91

127.0.0.1:6379>decrby pages 5

(integer)86

127.0.0.1:6379>decrby pages -5

(integer)91

127.0.0.1:6379>decrby pages -5

(integer)96

127.0.0.1:6379>

1.16.      APPEND

APPEND key value

如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。

如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。

127.0.0.1:6379> get db

(nil)

127.0.0.1:6379> APPENDdb redis

(integer) 5

127.0.0.1:6379> APPENDdb .io

(integer) 8

127.0.0.1:6379> get db

"redis.io"

127.0.0.1:6379>

1.17.      STRLEN

STRLEN key

返回 key 所储存的字符串值的长度。

当 key 储存的不是字符串值时,返回一个错误。

127.0.0.1:6379> getpages

"96"

127.0.0.1:6379> STRLENpages

(integer) 2

127.0.0.1:6379> get db

"redis.io"

127.0.0.1:6379> STRLENdb

(integer) 8

127.0.0.1:6379>

到此,相信大家对“redis数据类型strings的详细介绍”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

本文名称:redis数据类型strings的详细介绍-创新互联
文章来源:https://www.cdcxhl.com/article44/diiiee.html

成都网站建设公司_创新互联,为您提供电子商务网站制作关键词优化定制开发企业建站营销型网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

搜索引擎优化