Redis学习笔记之Redis字符串String(五)



特点【转】

     字符串类型最大的特点就是单key单value。

    string是redis最基本的类型,而且string类型是二进制安全的。

      redis的string可以包含任何数据。比如jpg图片或者序列化的对象。从内部实现来看其实string可以看作byte数组,最大上限是1G字节 

下面是string类型的定义:

struct sdshdr { 
long len; 
long free; 
char buf[]; 
}; 
buf是个char数组用于存贮实际的字符串内容。其实char和c#中的byte是等价的,都是一个字节 
len是buf数组的长度,free是数组中剩余可用字节数。 
由此可以理解为什么string类型是二进制安全的了。因为它本质上就是个byte数组。当然可以包含任何数据了。 
另外string类型可以被部分命令按int处理.比如incr等命令, 
redis的其他类型像list,set,sorted set ,hash它们包含的元素与都只能是string类型。 
如果只用string类型,redis就可以被看作加上持久化特性的memcached.当然redis对string类型的操作比memcached多很多啊。



常用api



set key:

【格式】set key value
【作用】设置key和value,如果存在可以覆盖
例如: 
  $: set k1 v1



get key

【格式】get key
【作用】获取某个key的value
例如: 
  $: set k1 v1
  $: get k1 #返回v1



del key

【格式】del key
【作用】删除某个key
例如: 
  $: set k1 v1
  $: del k1



append key value

【格式】append key value
【作用】对value追加内容
例如:
  $:set k2 v2
  $:append k2 v2
  $:get k2    #返回的value=v2v2



strlen key

【格式】strlen key
【作用】获取key对应value的长度
例如:
  $: set k2 v2 v2
  $: strlen k2 # 4



incr key 

【格式】incr key 
【作用】对数字类型的value+1操作,如果不是数字类型的报错
例如:
  $: set num 1
  $: incr num
  $: get num # 返回2



decr key

【格式】decr key
【作用】对数字类型的value-1操作,如果不是数字类型的报错
例如:
  $: set num 10
  $: decr num
  $: get num # 返回9



incrby key n

【格式】incrby key n
【作用】对数字类型的value+n操作,如果不是数字类型的报错
例如:
  $: set num 1
  $: incr num 11
  $: get num # 返回12



decrby key m

【格式】decrby key m
【作用】对数字类型的value-m操作,如果不是数字类型的报错
例如:
  $: set num 100
  $: decr num 45
  $: get num # 返回55



getrange key begin end

【格式】getrange key begin end
【作用】截取范围内的字符串[begin,end]
例如:
   $:set k2 v2v2
   $:getrange k2 1 2  #则返回2v



setrange key index newvalue

【格式】setrange key index newvalue
【作用】从index处用newvalue覆盖旧的value
例如:
  $:set k2 v2v2
  $:set k2 1 xx
  $:get k2  #返回vxx2



setex key time value

【格式】setex key time value
【作用】设置key并且设置过期时间,单位为秒
例如:
   $: setex k3 100 v3 
   $: ttl k3   # 使用ttl key来查看剩余过期时间



setnx key value

【格式】setnx key value
【作用】如果key不存在,设置成功,否则设置失败
例如:
  $:del k3
  $:setnx k3 v3_new   #设置成功
  $:setnx k3 vvv3     #设置失败



mget key1 key2 key3 ...

【格式】mget key1 key2 key3
【作用】如果key不存在,设置成功,否则设置失败
例如:
  $: set k1 v1
  $: set k2 v2
  $: set k3 v3
  $: mget k1 k2 k3 k4  #key不存在直接返回(nil)



mset key1 value1 key2 value2 ...

【格式】mset key1 value1 key2 value2 ...
【作用】同set key存在则覆盖
例如:
   $: mset k1 v11 k2 v22 k3 v33  #可以对上面mget的例子进行优化
   $: mget k1 k2 k3 k4 #查看了k1,k2,k3,k4的值



msetnx key1 value1 key2 value2 key3 value3 ...

【格式】msetnx key1 value1 key2 value2 key3 value3 ...
【作用】同setnx,只有key都不存在才成功
例如:
  $: del k1
  $: del k2
  $: del k3
  $: del k4
  $: msetnx k1 kk1 k2 kk2 k3 kk3 # 成功
  $: msetnx k3 vv3 k4 vv4 #失败,k3已经存在了,
  $: get k4 # 返回 (nil)



全部API

网址: http://redisdoc.com/

redis存较大string redis 中string类型最大存储大小_string类