Redis之String操作命令

前言

Redis作为cache服务器,支持多种数据结构,String、List、Hash、Set、Zset。多种数据结构的存在,使得Redis适用于多种业务,Redis的适用也越发广泛,本文就介绍Redis中最简单的数据结构String的操作命令。


简介

String类似memcache的结构,即最简单的 key-value 结构,一个Key对应一个简单的value,简单明了.

命令简介


SET

语法: SET key value [NX] [XX] [EX <seconds>] [PX [millseconds]] 设置一对key value
必选参数说明
SET:命令
key:待设置的key
value: 设置的key的value
可选参数说明
NX:表示key不存在才设置,如果存在则返回NULL
XX:表示key存在时才设置,如果不存在则返回NULL
EX seconds:设置过期时间,过期时间精确为秒
PX millsecond:设置过期时间,过期时间精确为毫秒

设置一对 key value 不带任何可选参数
SET key value

127.0.0.1:6379> SET key value
OK
成功

设置一对 key(已存在) value,带可选参数 NX

127.0.0.1:6379> SET key value NX
(nil)
key 已经存在,所以设置失败,返回 nil

设置一对 key(不存在) value,带可选参数 NX

127.0.0.1:6379> SET key1 value1 NX
OK
key1不存在,所以设置成功,返回 OK

设置一对 key(不存在) value,带可选参数 XX

127.0.0.1:6379> SET key3 value3 XX
(nil)
key3 不存在,所以设置失败

设置一对 key(存在) value,带可选参数 XX

127.0.0.1:6379> SET key value3 XX
OK
key存在,所以设置成功

设置一对 key(存在) value,带可选参数 EX

127.0.0.1:6379> SET key value EX 10086
OK
127.0.0.1:6379> ttl key
(integer) 10084

设置一对 key(存在) value,带可选参数 PX

127.0.0.1:6379> SET key value PX 10086000
OK
127.0.0.1:6379> ttl key
(integer) 10085

EXPX参数都是设置key的过期时间,差异为一个单位为一个单位为毫秒


SETNX

语法:SETNX key value
所有参数为必选参数,设置一对key value,如果key存在,则设置失败,等同于 SET key value NX

127.0.0.1:6379> SETNX key value
(integer) 0
key已经存在,设置失败


SETEX

语法:SETEX key expire value
所有参数为必选参数,设置一对 key value,并设过期时间,单位为秒,等同于 SET key value EX expire

127.0.0.1:6379> SETEX key 10086 value
OK
127.0.0.1:6379> ttl key
(integer) 10084


PSETEX

语法:PSETEX key expire value
所有参数为必选参数,设置一对 key value,并设过期时间,单位为毫秒,等同于 SET key value PX expire

127.0.0.1:6379> PSETEX key 10086000 value
OK
127.0.0.1:6379> ttl key
(integer) 10084


GET

语法: GET key
所有参数为必选参数,获取指定key的value,成功返回对应的 value,失败返回 NULL

127.0.0.1:6379> GET key
"value"
127.0.0.1:6379> GET Keykk
(nil)


GETSET

语法:GETSET key value
所有参数为必选参数,获取指定key的value,并设置key的值为新值value

127.0.0.1:6379> GETSET key valuevalue
"value"
127.0.0.1:6379> GET key
"valuevalue"


SETRANGE

语法:SETRANGE key offset value
所有参数为必选参数,设置指定key,偏移量offset后的值为value,影响范围为value的长度, offset不能小于0

127.0.0.1:6379> GET key
"valuevalue"
127.0.0.1:6379> SETRANGE key 2 kk
(integer) 10
127.0.0.1:6379> GET key
"vakkevalue"


GETRANGE

语法:GETRANGE key start end
所有参数为必选参数,获取指定key指定区间的value值,
startend可以为负数,如果为负数则反向取区间

127.0.0.1:6379> GET key
"vakkevalue"
127.0.0.1:6379> GETRANGE key 2 5
"kkev"
127.0.0.1:6379> GETRANGE key -5 -2
"valu"


MGET

语法:MGET key1 [key2 key3 ...]
所有参数为必选,key值至少为一个,获取多个key的value值,key值存的返回对应的value,不存在的返回NULL

127.0.0.1:6379> MGET key keykey key1 key1234

  1. "vakkevalue"
  2. (nil)
  3. "value1"
  4. (nil)

MSET

语法:MSET key1 value1 [key2 value2 key3 value3 ...]
所有参数为必选,keyvalue对至少为一对。该命令功能是设置多对key-value值。

127.0.0.1:6379> MSET key1 v1 key2 v2 key3 v3
OK
127.0.0.1:6379> MGET key1 key2 key3

  1. "v1"
  2. "v2"
  3. "v3"

MSETNX

语法:MSETNX key1 value1 [key2 value2 key3 value3 ...] 所有参数为必选,keyvalue对至少为一对。该命令功能是设置多对key-value值,如果key存在,则不做任何操作。

127.0.0.1:6379> MGET key1 key2 key3

  1. "v1"
  2. (nil)
  3. "v3"
    127.0.0.1:6379> MSETNX key1 v11 key2 v12 key3 v13
    (integer) 0
    127.0.0.1:6379> MGET key1 key2 key3
  4. "v1"
  5. (nil)
  6. "v3"
    127.0.0.1:6379> MSETNX key11 v11 key12 v12 key13 v13
    (integer) 1
    127.0.0.1:6379> MGET key11 key12 key13
  7. "v11"
  8. "v12"
  9. "v13"

INCR

语法: INCR key
所有参数为必选,指定key做加1操作。指定key对应的值必须为整型,否则返回错误,操作成功后返回操作后的值

127.0.0.1:6379> GET key
"vakkevalue"
127.0.0.1:6379> INCR key
(error) ERR value is not an integer or out of range
127.0.0.1:6379> SET key 100
OK
127.0.0.1:6379> INCR key
(integer) 101


DECR

语法: DECR key
所有参数为必选,指定key做减1操作。指定key对应的值必须为整型,否则返回错误,操作成功后返回操作后的值。为DECR的逆操作。

127.0.0.1:6379> DECR key
(integer) 100


INCRBY

语法:INCRBY key data
所有参数为必选参数,指定key做加data操作,指定key对应的值和data必须为整型,否则返回错误,操作成功后返回操作后的值

27.0.0.1:6379> INCRBY key djfklaj
(error) ERR value is not an integer or out of range
127.0.0.1:6379> INCRBY key 20
(integer) 120


DECRBY

语法:DECRBY key data
所有参数为必选参数,指定key做减data操作,指定key对应的值和data必须为整型,否则返回错误,操作成功后返回操作后的值

127.0.0.1:6379> DECRBY key 10
(integer) 110


INCRBYFLOAT

语法:INCRBYFLOAT key data
所有参数为必选参数,对指定key做加data操作,data为浮点型数据,key对应的value也必须为数值类型,否则返回错误。操作成功后返回操作后的数值

127.0.0.1:6379> GET key
"22.22"
127.0.0.1:6379> INCRBYFLOAT key 1.1
"23.32"
127.0.0.1:6379> GET nonumber
"kdjfl"
127.0.0.1:6379> INCRBYFLOAT nonumber 1.1
(error) ERR value is not a valid float


APPEND

语法:APPEN key appendvalue
所有参数为必选参数,在指定keyvalue值后追加appendvalue,操作成功后返回新值得长度,如果key对应的value不存在,则以appendvalue创建一个新值

127.0.0.1:6379> GET key
"test"
127.0.0.1:6379> APPEND key append
(integer) 10
127.0.0.1:6379> GET key
"testappend"
127.0.0.1:6379> GET append
(nil)
127.0.0.1:6379> APPEND append append
(integer) 6
127.0.0.1:6379> GET append
"append"


总结

Redis String 数据结构看之简单,实则大有乾坤,有待探寻。String类型提供了丰富的操作命令,可以满足大部分针对String的操作要求。工具已提供,怎么用就看个人能力了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,200评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,526评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,321评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,601评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,446评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,345评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,753评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,405评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,712评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,743评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,529评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,369评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,770评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,026评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,301评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,732评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,927评论 2 336

推荐阅读更多精彩内容