日期:2014-05-16 浏览次数:20481 次
五种数据类型:string, list, set, zset, hash
1). string类型
String是最简单的类型,一个key对应一个value,string类型是二进制安全的。Redis的string可以包含任何数据,比如jpg图片或者序列化的对象(PHP中对象序列化函数serialize)
内部实现,其本质是一个byte数组,字符串的大小被限制在512M以内
struct sdshdr { long len; //buf数组的长度 long free; //buf数组中剩余可用字节数 char buf[]; //存储实际字符串内容 }
操作方法:
a.set方法:
格式:set key value
设置key对应的值为string类型的value,OK=成功,0=失败, 若是该key已经存在,则覆盖其原有值。
>set pwd 123456 //即添加一个pwd=123456的k-v OK
b.get方法:
格式:get key
获取key对应的string值,如果key不存在返回nil
>get pwd //即获取pwd对应的值 "123456" >get name (nil)
c.setnx方法:
格式:setnx key value
与set相同,不同的是:设置之前要检测key是否已经存在,如果key已经存在,则返回0,(nx = notexist)
>setnx user zhangsan (integer) 1 >setnx user lisi (integer) 0 >get user "zhangsan" >set user chuangrain OK >get user "chuangrain"
d. setex方法:
格式:setex key seconds value
设置key对应的值为string类型的value,并指定对此键值对应的有效期seconds
>setex tea 10 food //即设置tea=food,指定10秒钟有效时间 OK >get tea "food" >get tea //10s后 (nil)
e.setrange方法:
格式:setrange key offset value
用value参数调换指定key对应的字符串值 ,从偏移量offset开始,不存在的key当作空白字符串处理,如果offset大于key对应的字符串长度,那么原字符串和偏移量之间的空白将用零比特(zerobytes, "\x00")来填充,返回被setrange修改后的字符串长度。
>set hw "hello word" OK >setrange hw 6 "Redis" (integer)11 >get hw "helloRedis" >setrange hello 2 "chuang" //hello不存在 (integer) 12 >get hello "\x00\x00chuangrain" >setrange hello 15 rd (integer) 17 >get hello "\x00\x00chuangrain\x00\x00\x00rd"
f.mset方法
格式:mset key1 value1 key2 value2 …
一次设置多个key的值,成功返回OK,即全部设置成功,失败返回0,即没有任何设置,此操作具有原子性
g.msetnx方法: