redis的数据类型有多种:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
一、String(字符串)
string 类型是二进制安全的, 可以包含任何数据。比如jpg图片或者序列化的对象。string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
##存入127.0.0.1:6379>setmynamexinghuaOK
不玩了 没意思。。。
二、Hash(哈希)
hash 是一个键值(key=>value)对集合,是一个string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。每个 hash 可以存储 232 -1 键值对(40多亿)。
下面例子使用 HMSET 设置了两个 field=>value 键值对, HGET 获取对应 field 对应的 value。
127.0.0.1:6379>HMSETxinghuafield1"Hello"field2"World"OK127.0.0.1:6379>HGETxinghuafield1"Hello"127.0.0.1:6379>HGETxinghuafield(nil) 127.0.0.1:6379>HGETxinghuafield2"World"
三、List(列表)
list列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
127.0.0.1:6379>lpushxinghuaredis(integer) 1127.0.0.1:6379>lpushxinghuamongodb(integer) 2127.0.0.1:6379>lpushxinghuarabbitmq(integer) 3#查看127.0.0.1:6379>lrangexinghua0101) "rabbitmq"2) "mongodb"3) "redis"127.0.0.1:6379>
四、Set(集合)
Set 是 string 类型的无序集合。sadd key member 添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0。根据集合内元素的唯一性,第二次插入的元素将被忽略。集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。
127.0.0.1:6379>smembersxinghua(emptylistorset) 127.0.0.1:6379>saddxinghua123(integer) 1127.0.0.1:6379>saddxinghua234(integer) 1127.0.0.1:6379>saddxinghua345(integer) 1127.0.0.1:6379>smembersxingua(emptylistorset) 127.0.0.1:6379>smembersxinghua1) "123"2) "234"3) "345"127.0.0.1:6379>saddxinghua345(integer) 0127.0.0.1:6379>smembersxinghua1) "123"2) "234"3) "345"127.0.0.1:6379>#查询127.0.0.1:6379>getmyname"xinghua"#删除127.0.0.1:6379>delmyname(integer) 1#再次查询127.0.0.1:6379>getmyname(nil) #返回key中字符串值的子字符127.0.0.1:6379>setxinghuahelloxinghuaOK127.0.0.1:6379>getrangexinghua12"el"#将给定key的值设为value,并返回key的旧值127.0.0.1:6379>getsetxinghuaxinghuanew"helloxinghua"#Mget命令返回所有(一个或多个)给定key的值。#如果给定的key里面,有某个key不存在,那么这个key返回特殊值nil。127.0.0.1:6379>setxinghua1xing1OK127.0.0.1:6379>setxinghua2xing2OK127.0.0.1:6379>mgetxinghua1xinghua2xinghua31) "xing1"2) "xing2"3) (nil) #Setex命令为指定的key设置值及其过期时间,以秒为单位。##如果key已经存在,SETEX命令将会替换旧的值。127.0.0.1:6379>getxinghua"xinghuanew"127.0.0.1:6379>setexxinghua10xingOK127.0.0.1:6379>getxinghua"xing"127.0.0.1:6379>ttlxinghua(integer) -2#过期了这就。。。127.0.0.1:6379>getxinghua(nil) #只有在key不存在时设置key的值127.0.0.1:6379>setnxxinghuavalue(integer) 1127.0.0.1:6379>getxinghua"value"127.0.0.1:6379>setnxxinghuavalue1(integer) 0127.0.0.1:6379>getxinghua"value"#返回key所储存的字符串值的长度127.0.0.1:6379>strlenxinghua(integer) 5再来几个命令:#同时设置一个或多个key-value对127.0.0.1:6379>msetxinghua11xing1xinghua22xing2OK127.0.0.1:6379>mgetxinghua11xinghua221) "xing1"2) "xing2"#msetnxvalue [keyvalue ...] 同时设置一个或多个key-value对,当且仅当所有给定key都不存在。#psetexkeymillisecondsvalue这个命令和setex命令相似,但它以毫秒为单位设置key的生存时间,而不是像setex命令那样,以秒为单位。#incrkey将key中储存的数字值增一。#incrbykeyincrement将key所储存的值加上给定的增量值(increment)。#incrbyfloatkeyincrement将key所储存的值加上给定的浮点增量值(increment)。#decrkey将key中储存的数字值减一。#decrbykeydecrementkey所储存的值减去给定的减量值(decrement)。#appendkeyvalue如果key已经存在并且是一个字符串,append命令将指定的value追加到该key原来值(value)的末尾。
五、zset(sorted set:有序集合)
zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。zadd key score member 添加元素到集合,元素在集合中存在则更新对应score。
127.0.0.1:6379>zaddxinghua0123(integer) 1127.0.0.1:6379>zaddxinghua2789(integer) 1127.0.0.1:6379>zaddxinghua1456(integer) 1127.0.0.1:6379>smembersxinghua(error) WRONGTYPEOperationagainstakeyholdingthewrongkindofvalue127.0.0.1:6379>ZRANGEBYSCORExinghua010001) "123"2) "456"3) "789"127.0.0.1:6379>zrangebyscorexinghua010001) "123"2) "456"3) "789"127.0.0.1:6379>
总结:
就是一些命令,遇到再说吧。。。随遇随查。。。
END