Redis数据类型Redis支持五种数据类型:string(字符串)、hash(散列)、list(列表)、set(集合)和zset(sortedset:有序集)。String(字符串)String是最常用也是最简单的key-value键值对,value不仅可以是String,还可以是数字。String默认以字符串形式存储在redis中,由redisObject引用。当遇到incr、decr等操作时,会转化为数值进行计算。此时redisObject的编码字段为int。string是redis最基本的类型,你可以理解为和Memcached完全一样的类型,一个key对应一个value。字符串类型是二进制安全的。这意味着redis的字符串可以包含任何数据。例如jpg图像或序列化对象。字符串类型是Redis最基本的数据类型,字符串类型的值最多可以存储512MB。SETkeyvalue设置指定key的值GETkey获取指定key的值INCRkey将key中存储的数字值增加一个INCRBYkeyincrement将key中存储的值增加给定的增量值(increment)INCRBYFLOATkeyincrementwillkey中存储的值加上给定的浮点增量值(increment)DECRkeykey中存储的数字值减一DECRBYkeydecrementkeykey中存储的值减去给定的减值(decrement)APPENDkeyvalue如果key已经存在并且是一个字符串,APPEND命令会将指定的值追加到key的原始值(value)的末尾DELkey[key...]deletekeyEXISTSkey[key...]keyexists哈希(Hash)Redis哈希是键值对(key=>value)的集合。Redis哈希是字符串类型的字段和值之间的映射表。哈希特别适用于存储对象。RedisHash对应Value。内部其实是一个HashMap。其实这里有两种不同的实现方式。当这个Hash的成员比较少的时候,Redis会节省内存。它将使用类似于一维数组的方法进行紧凑存储,而不是真正的HashMap结构。对应值redisObject的编码为zipmap。当成员数量增加时,它会自动转换为真正的HashMap。此时编码为ht。HSETkeyfieldvalue为指定key设置字段/值HMSETkeyfieldvalue[fieldvalue...]设置key中的多个字段/值HDELkeyfield1[field2]删除一个或多个哈希表字段HEXISTSkeyfield查看哈希表key中指定字段是否存在HGETkeyfield获取哈希表中存储的指定字段的值HMGETkeyfield[field...]获取key中多个字段的值HGETALLkey获取哈希表中的值HINCRBY中指定键的所有字段和值keyfieldincrement为哈希表中指定字段的整数值key加增量HDELkeyfield[field...]删除一个或多个字段delkey删除整个hashList(Lists)Redis列表是简单的字符串列表,按插入顺序排序。您可以将元素添加到列表的头部(左)或尾部(右)。Redislist实现为双向链表,可以支持反向查找和遍历,操作起来更方便,但是带来了一些额外的内存开销。Redis的很多内部实现,包括发送缓冲队列,也都用到这个数据结构应用场景:Redislist有很多应用场景,也是Redis最重要的数据结构之一,比如twitter的followlist,fanlist等.可以用Redis的链表结构来实现。再比如一些应用使用Redis的list类型来实现一个简单的轻量级消息队列。生产者压入,消费者弹出/弹出LPUSHkeyvalue[value...]发送一个或多个值valueInsertintotheheaderofthelistkeyLPUSHXkeyvalueInsertthevaluevalueintolistkeyifandonlyifthekeyexistsandisalistRPUSHkeyvalue[value...]InsertoneormorevaluesvalueintothelistkeyRPUSHXkeyvalue将值value插入列表key的尾部当且仅当key存在并且是一个列表LPOPkey移除并返回列表键的头元素RPOPkey移除并返回列表键LINDEXkeyindex返回列表键中下标为索引的元素LINSERTkeyBEFORE|AFTERpivotvalue插入值value入listkey,value之前或之后pivotLSETkeyindexvalue设置listkey下标为index元素的值设置为valueLRANGEkeystartstop返回listkey中指定区间内的元素,可以是a负数LTRIMkeystartstop修剪一个列表(trim),也就是说让列表只保留指定区间内的元素,不在指定区间内的所有元素都会被删除BLPOPkey[key…]timeout移出并获取列表的第一个元素,如果列表中没有元素,则列表将被阻塞,直到等待超时或找到弹出元素BRPOPkey1[key2]timeout移出并获取最后一个元素列表,如果列表中没有元素,则列表将被阻塞,直到等待超时或找到弹出元素LREMkeycountvalue根据参数count的值,移除列表中等于参数值的元素count>0:从头到尾查找,移除等于参数值的元素value,个数为countcount<0:从list开始从表尾开始查找,去掉等于value的元素,个数为count的绝对值。count=0:从表中移除所有等于value的值。集合(Set)Redis的集合是字符串类型的无序集合。集合成员是唯一的,这意味着集合中不能出现重复的数据。Redis中的集合是通过哈希表实现的,所以增删改查的复杂度都是O(1)。集合中的最大成员数为232-1(4294967295,每个集合可存储超过40亿个成员)。SADDkeymember[member…]添加一个或多个成员元素到集合key中,集合中已经存在的成员元素将被忽略SMEMBERSkey返回集合key中的所有成员SISMEMBERkeymember判断成员元素是否是一个memberofthesetkeySPOPkey移除并返回集合中的一个随机元素baseoftheset,命令返回一个包含count个元素的数组,数组中的每个元素都是不同的。如果计数大于或等于集合的基数,则返回整个集合。如果count为负数,命令返回一个数组,数组中的元素可能会重复出现,数组的长度为count的绝对值SREMkeymember[member…]移除集合key中的一个或多个成员元素不存在的成员元素将被忽略SCARDkey返回集合键的基数(集合中元素的数量)SINTERkey[key...]交集成员列表SINTERSTOREdestinationkey[key...]这个命令类似到SINTERkey[key...]命令,但它将结果保存到目标集合而不是简单地返回结果集SUNIONkey[key...]联合成员列表SDIFFkey[key...]返回allmembersofasetthatisamongallgivensets有序集(sortedset)的区别Redis有序集和sets一样也是string类型元素的集合,不允许有重复的成员。不同之处在于每个元素都将与一个双精度类型的分数相关联。Redis使用分数将集合的成员从小到大排序。有序集的成员是唯一的,但分数(score)可以重复。集合是通过哈希表实现的,所以增删改查的复杂度都是O(1)。集合中的最大成员数为232-1(4294967295,每个集合可存储超过40亿个成员)。ZADDkeyscoremember[[scoremember][scoremember]…]向有序集合key添加一个或多个成员元素及其分值ZRANGEkeystartstop[WITHSCORES]返回指定区间内的有序集合keyZSCOREkeymember返回有序集合key中成员的分数值ZINCRBYkeyincrementmember是有序集合key加上increment的成员成员的分数值ZCARDkey返回有序集合key的基数ZCOUNTkeyminmax返回有序集合中setkey,score值在min和max之间的成员个数(默认包括score值等于min或max的成员)ZREVRANGEkeystartstop[WITHSCORES]返回指定区间内有序集合key中的成员ZRANKkeymember返回成员member在排序集键中的排名。其中,有序集合的成员按照分值递增(从小到大)的顺序排列。ZREMkeymember[member…]移除有序集合key中的一个或多个成员,不存在的成员将被忽略参考:http://redisdoc.com/http://www.runoob.com/redis/r...https://redis.io/commands
