分享更有价值
被信任是一种快乐

redis数据类型strings的详细介绍

文章页正文上

本篇内容主要讲解“redis数据类型strings的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“redis数据类型strings的详细介绍”吧!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. SETSet 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 dbredisOK127.0.0.1:6379> get db”redis” #使用ex选项127.0.0.1:6379> set dbredis ex 20OK127.0.0.1:6379> ttl db(integer) 16127.0.0.1:6379> get db”redis”127.0.0.1:6379> ttl db(integer) 5127.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 20000OK127.0.0.1:6379>PTTL db(integer)15674127.0.0.1:6379>PTTL db(integer)8974127.0.0.1:6379>PTTL db(integer)8045127.0.0.1:6379>get db”redis”127.0.0.1:6379>PTTL db(integer)2482127.0.0.1:6379>get db”redis”127.0.0.1:6379>get db(nil)# 使用 NX 选项127.0.0.1:6379>set db oracle NXOK127.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)0127.0.0.1:6379>get name(nil)127.0.0.1:6379>set name hunt1574 XX —键不存在,失败(nil)127.0.0.1:6379>set name redisOK127.0.0.1:6379>set name hunt1574 XXOK127.0.0.1:6379>get name”hunt1574″Setex key seconds value将值 value 关联到 key ,并将key 的生存时间设为 seconds (以秒为单位)。如果 key 已经存在, SETEX 命令将覆写旧值。这个命令类似于以下两个命令:SETkey valueEXPIREkey seconds # 设置生存时间不同之处是, SETEX 是一个原子性(atomic)操作,关联值和设置生存时间两个动作会在同一时间内完成,该命令在 Redis 用作缓存时,非常实用。#key不存在赋值127.0.0.1:6379>EXISTS user(integer)0127.0.0.1:6379>setex user 30 rootOK127.0.0.1:6379>get user”root”127.0.0.1:6379>ttl user(integer)15127.0.0.1:6379>get user(nil)#key存在赋值127.0.0.1:6379>setex user 20 adminOK127.0.0.1:6379>get user”admin”127.0.0.1:6379>ttl user(integer)14127.0.0.1:6379>get user(nil)SETNX key value将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。SETNX是『SET if Not eXists』(如果不存在,则 SET)的简写。#赋值与取值127.0.0.1:6379>EXISTS www(integer)0127.0.0.1:6379>setnx www code.google.com(integer)1127.0.0.1:6379>setnx www redis.io(integer)0127.0.0.1:6379>get www”code.google.com”127.0.0.1:6379>SETRANGE key offset value用 value 参数覆写(overwrite)给定offset的 key 所储存的字符串值127.0.0.1:6379>set www code.google.comOK127.0.0.1:6379>get www”code.google.com”127.0.0.1:6379>SETRANGE www 0 mail(integer)15127.0.0.1:6379>get www”mail.google.com”127.0.0.1:6379>SETRANGE www 0 gmail(integer)15127.0.0.1:6379>get www”gmailgoogle.com”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″OK127.0.0.1:6379>mget os db date1)”linux”2)”redis”3)”2015-03-17”#值覆盖127.0.0.1:6379>mset os “linux” db “oracle” date “2015-03-17″OK127.0.0.1:6379>mget os db date1)”linux”2)”oracle”3)”2015-03-17″127.0.0.1:6379>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 date1)”linux”2)”redis”3) “2015-03-17″127.0.0.1:6379>msetnx os “linux” db “oracle” date “2015-03-17″(integer)0127.0.0.1:6379>mget os db date1)”linux”2)”redis”3)”2015-03-17″127.0.0.1:6379>GET key返回 key 所关联的字符串值。如果 key 不存在那么返回特殊值nil 。假如 key 储存的值不是字符串类型,返回一个错误,因为 GET 只能用于处理字符串值。127.0.0.1:6379>set dbname redisOK127.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)3127.0.0.1:6379>get db(error)WRONGTYPE Operation against a key holding the wrong kind of valueMGET key [key …]返回所有(一个或多个)给定 key 的值。如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。因此,该命令永不失败。#赋值与取值127.0.0.1:6379>set date 2015-03-17OK127.0.0.1:6379>set time 10:00OK127.0.0.1:6379>mget date time1)”2015-03-17″2)”10:00″127.0.0.1:6379>mget date time week —week不存在,返回nil1)”2015-03-17″2)”10:00″3)(nil)GETRANGE key startend返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定(包括start 和 end 在内)。负数偏移量表示从字符串最后开始计数, -1 表示最后一个字符, -2 表示倒数第二个,以此类推。范围超过字符串最大下标值以最大下标值为准。#赋值与取值127.0.0.1:6379>set www redis.ioOK127.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”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”INCR key将 key 中储存的数字值增一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在 64 位(bit)有符号数字表示之内。127.0.0.1:6379>EXISTS pages(integer)0127.0.0.1:6379>incr pages(integer)1127.0.0.1:6379>get pages”1″127.0.0.1:6379>set rows 0OK127.0.0.1:6379>incr rows(integer)1127.0.0.1:6379>incr rows(integer)2127.0.0.1:6379>incr rows(integer)3127.0.0.1:6379>get rows”3″127.0.0.1:6379>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)6127.0.0.1:6379>INCRBY rows 3(integer)9127.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)-2127.0.0.1:6379>INCRBY num -2(integer)-4127.0.0.1:6379>INCRBY num -2(integer)-6INCRBYFLOAT 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.99OK127.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″DECR key将 key 中储存的数字值减一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。127.0.0.1:6379>set price 398.99OK127.0.0.1:6379>decr price(error)ERR value is not an integer or out of range127.0.0.1:6379>set pages 98OK127.0.0.1:6379>decr pages(integer)97127.0.0.1:6379>decr pages(integer)96DECRBY keydecrement将 key 所储存的值减去减量 decrement 。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。127.0.0.1:6379>get pages”96″127.0.0.1:6379>decrby pages 5(integer)91127.0.0.1:6379>decrby pages 5(integer)86127.0.0.1:6379>decrby pages -5(integer)91127.0.0.1:6379>decrby pages -5(integer)96127.0.0.1:6379>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) 5127.0.0.1:6379> APPENDdb .io(integer) 8127.0.0.1:6379> get db”redis.io”127.0.0.1:6379>STRLEN key返回 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。127.0.0.1:6379> getpages”96″127.0.0.1:6379> STRLENpages(integer) 2127.0.0.1:6379> get db”redis.io”127.0.0.1:6379> STRLENdb(integer) 8127.0.0.1:6379>到此,相信大家对“redis数据类型strings的详细介绍”有了更深的了解,不妨来实际操作一番吧!这里是云技术网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: Oracle怎么查询Interval partition分区表内数据

本篇内容介绍了“Oracle怎么查询Interval partition分区表内数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!注:dba_tab_parti…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册