Redis String

原创
2016/09/14 09:33
阅读数 50

 

String(字符串)

首先 Redis 没有专用的整数类型,那么字符串必须可以暗含整数和浮点类型,Redis内部会自动判断一个加入的字符串是否是数值类型,如果是数值类型,那么 key 内储存的字符串被解释为十进制 64 位有符号整数来执行数学相关运算的操作。

 

1、基础操作

> append key value

把value添加到指定key值的末尾,同时返回字符的长度,一个汉字长度为3,如果key不存在,则等价于set操作。

 

>strlen key

返回值的长度,一个汉字长度为3,key不存在返回为 0 。

 

 

2、getXXXX

>get key

返回指定key的值,如果Redis不存在这个key,返回null

 

>mget key1 key2

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

 

>getrange key start end

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

 

>getset key value

返回key的旧值(如果不存在返回为null),同时为key设定新值。

 

 

3、setXXX

>set key value

为key指定新的值,同时重新设置生存时间。

 

>setex key seconds value

原子性(atomic)操作,关联值和设置生存时间两个动作会在同一时间内完成,单位是秒。

 

>psetex key millseconds value

原子性(atomic)操作,关联值和设置生存时间两个动作会在同一时间内完成,单位是毫秒。

 

>setnx key value

将 key 的值设为 value ,当且仅当 key 不存在(SET if Not eXists)。若给定的 key 已经存在,则 SETNX 不做任何动作。

>mset key1 1234 key2 4567

设置一个或多个key的值

 

>msetnx key1 1234 key2 4567

同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在(if Not eXist),而且这个操作是原子性的,要么全部成功,要么全部失败。

 

>setrange key offset value

用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始。不存在的 key 当作空白字符串处理。SETRANGE 命令会确保字符串足够长以便将 value 设置在指定的偏移量上,如果给定 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ),那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )来填充。

当生成一个很长的字符串时,Redis 需要分配内存空间,该操作有时候可能会造成服务器阻塞(block)。在2010年的Macbook Pro上,设置偏移量为 536870911(512MB 内存分配),耗费约 300 毫秒, 设置偏移量为 134217728(128MB 内存分配),耗费约 80 毫秒,设置偏移量 33554432(32MB 内存分配),耗费约 30 毫秒,设置偏移量为 8388608(8MB 内存分配),耗费约 8 毫秒。 注意若首次内存分配成功之后,再对同一个 key 调用 SETRANGE 操作,无须再重新内存。

 

4、i++,i--

>incr key

原子性自增操作,如果key不存在则默认为-,然后+1。

 

>incrby key num

指定的key值加num,返回结果值,如果key不存在,那么默认设置为 0,再加num。

 

>incrbyfloat key num

为 key 中所储存的值加上浮点数增量 num.

 

> decr key

指定的key值减1,返回结果值,如果key不存在,那么默认设置为 0,再减1。

 

>decrby key num

指定的key值减num,返回结果值,如果key不存在,那么默认设置为 0,再减num。

 

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部