redis支持的数据类型很是丰富,有String、list、set、hash、zset、hyperLogLog、georedis
1. String类型bash
redis中的字符串就是一个由字节组成的序列。字符串能够储存一下3种类型的数据app
字节串spa
整数命令行
浮点数code
对整数和浮点数的操做索引
命令INCR,将存储的值加上1rem
127.0.0.1:6379> set s_incr 0 OK 127.0.0.1:6379> incr s_incr (integer) 1 127.0.0.1:6379> incr s_incr (integer) 2
命令DECR,将存储的值减上1字符串
127.0.0.1:6379> set s_decr 10 OK 127.0.0.1:6379> decr s_decr (integer) 9 127.0.0.1:6379> decr s_decr (integer) 8
命令INCRBY,将存储的值加上整数get
127.0.0.1:6379> set s_incrby 0 OK 127.0.0.1:6379> incrby s_incrby 5 (integer) 5 127.0.0.1:6379> incrby s_incrby 2 (integer) 7
命令DECRBY,将存储的值减上整数
127.0.0.1:6379> set s_decrby 10 OK 127.0.0.1:6379> decrby s_decrby 2 (integer) 8 127.0.0.1:6379> decrby s_decrby 3 (integer) 5
命令INCRBYFLOAT,将存储的值加上浮点数(2.6版本以上使用)
127.0.0.1:6379> set s_incrbyfloat 2 OK 127.0.0.1:6379> incrbyfloat s_incrbyfloat 1.5 "3.5" 127.0.0.1:6379> incrbyfloat s_incrbyfloat 0.6 "4.1"
对字符串的操做
命令APPEND,将值value追加到给定键当前存储的值的末尾
127.0.0.1:6379> set s_append leo OK 127.0.0.1:6379> append s_append _111 (integer) 7 127.0.0.1:6379> get s_append "leo_111"
命令GETRANGE,获取start至end范围内全部字符组成的子串,包括start和end在内(该命令是由SUBSTR命令更名而来,2.6以上版本仍是推荐使用GETRANGE命令)
127.0.0.1:6379> getrange s_append 1 3 "eo_"
命令SETRANGE,将从start偏移量开始的子串设置为给定值
127.0.0.1:6379> setrange s_append 4 222 (integer) 7 127.0.0.1:6379> get s_append "leo_222"
命令STRLEN,得到该键保存的value的长度
127.0.0.1:6379> strlen s_append (integer) 7
命令GET,得到该键保存的值
127.0.0.1:6379> get s_append "leo_222"
命令GETSET,设置一个字符类型的值,而且返回他以前的值
127.0.0.1:6379> getset s_append leo_333 "leo_222" 127.0.0.1:6379> getset s_append1 leo_333(设置一个不存在的key会返回nil) (nil) 127.0.0.1:6379> get s_append1 "leo_333"
命令MGET,根据提供的多个键返回键对应的多个值
127.0.0.1:6379> set s_append1 leo_444 OK 127.0.0.1:6379> mget s_append s_append1 1) "leo_333" 2) "leo_444"
命令MSET,设置多个键值对
127.0.0.1:6379> mset s_append2 leo_555 s_append3 leo_666 OK 127.0.0.1:6379> mget s_append2 s_append3 1) "leo_555" 2) "leo_666"
命令MSETNX,设置多个键值对,若是键不存在的时候设置成功(若是多个键值对有一个不知足要求,就所有设置不成功)
127.0.0.1:6379> msetnx s_append3 leo_777 s_append4 leo_888 (integer) 0 127.0.0.1:6379> mget s_append3 s_append4 1) "leo_666" 2) (nil) 127.0.0.1:6379> msetnx s_append5 leo_777 s_append4 leo_888 (integer) 1 127.0.0.1:6379> mget s_append5 s_append4 1) "leo_777" 2) "leo_888"
命令PSETEX,给一个键设置值和过时的毫秒数
127.0.0.1:6379> psetex s_ex 5000 test OK 127.0.0.1:6379> get s_ex "test" 127.0.0.1:6379> get s_ex (nil)
命令SET,给一个键设置字符串值,命令格式set key value [EX seconds] [PX milliseconds] [NX|XX]
127.0.0.1:6379> set s_set test1 EX 20 OK 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set (nil) 127.0.0.1:6379> set s_setml test EX 10 PX 5000(PX和EX参数不能同时设置) (error) ERR syntax error 127.0.0.1:6379> set s_setml test PX 5000(这里手慢了一点,不过确实生效了) OK 127.0.0.1:6379> get s_setml (nil) 127.0.0.1:6379> set s_nx test XX(该键若是存在的时候才会设置成功) (nil) 127.0.0.1:6379> get s_nx (nil) 127.0.0.1:6379> set s_nx test NX(该键若是不存在的时候才会设置成功) OK 127.0.0.1:6379> set s_nx test NX (nil)
命令SETEX,给键设置值和过时时间
127.0.0.1:6379> setex s_ex 5 aaa OK 127.0.0.1:6379> get s_ex "aaa" 127.0.0.1:6379> get s_ex (nil)
命令SETNX,给键设置值,只有键不存在的时候才能成功
127.0.0.1:6379> setnx s_nx test (integer) 0 127.0.0.1:6379> setnx s_nx test (integer) 0 127.0.0.1:6379> get s_nx "test"
2. list类型
redis中一个列表结构能够有序的存储多个字符串,而且能够重复。
命令RPUSH,将给定值推入列表的右端
127.0.0.1:6379> rpush l_rpush leo (integer) 1 127.0.0.1:6379> rpush l_rpush leo1 (integer) 2 127.0.0.1:6379> rpush l_rpush leo (integer) 3
命令LRANGE,获取列表在给定范围上的全部值
127.0.0.1:6379> lrange l_rpush 0 -1(0 -1表明获取列表中的全部值) 1) "leo" 2) "leo1" 3) "leo" 127.0.0.1:6379> lrange l_rpush 0 1 1) "leo" 2) "leo1"
命令LINDEX,获取列表在给定位置上的单个元素
127.0.0.1:6379> lindex l_rpush 1 "leo1" 127.0.0.1:6379> lindex l_rpush 2 "leo"
命令LPOP,从列表的左端弹出一个值,并返回被弹出的值
127.0.0.1:6379> lpop l_rpush "leo" 127.0.0.1:6379> lrange l_rpush 0 -1 1) "leo1" 2) "leo"
命令BLPOP,从列表的左端弹出一个值,并返回被弹出的值,若是列表为空就会阻塞,直到列表中存在值
127.0.0.1:6379> blpop l_bl 20(20为等待超时时间,若是超时会返回nil) (nil)
先执行
127.0.0.1:6379> blpop b_bl 20
而后从新开一个命令行窗口执行
127.0.0.1:6379> lpush b_bl 1 (integer) 1
能够看到BLPOP命令正确返回了数据
127.0.0.1:6379> blpop b_bl 20 1) "b_bl" 2) "1" (3.63s)
命令BLPOP,从列表的右端弹出一个值,并返回被弹出的值,若是列表为空就会阻塞,直到列表中存在值
命令BRPOPLPUSH,从原列表中弹出最右边的值,而且推入到另外一个列表的最左边
127.0.0.1:6379> lpush l_source 1 2 3 (integer) 3 127.0.0.1:6379> lpush l_dest 4 5 6 (integer) 3 127.0.0.1:6379> brpoplpush l_source l_dest 20 "1" 127.0.0.1:6379> lrange l_dest 0 -1 1) "1" 2) "6" 3) "5" 4) "4"
命令LINDEX,从列表中的某个索引得到这个元素
127.0.0.1:6379> LINDex l_dest 2 "5"
命令LINSERT,从列表中另一个元素的前面或者后面插入一个元素
127.0.0.1:6379> linsert l_dest before 6 2 (integer) 5 127.0.0.1:6379> lrange l_dest 0 -1 1) "1" 2) "2" 3) "6" 4) "5" 5) "4"
命令LLEN,得到list的长度
127.0.0.1:6379> llen l_dest (integer) 5
命令LPOP,从列表左边弹出一个元素
127.0.0.1:6379> lpop l_dest "1"
命令LPUSH,从列表左边推入一个元素
127.0.0.1:6379> lpush l_dest 0 (integer) 5 127.0.0.1:6379> lrange l_dest 0 -1 1) "0" 2) "2" 3) "6" 4) "5" 5) "4"
命令LPUSHX,若是键存在的话,就从左边推入一个元素
127.0.0.1:6379> lpushx l_dest1 123 (integer) 0 127.0.0.1:6379> lpushx l_dest 123 (integer) 6 127.0.0.1:6379> lrange l_dest 0 -1 1) "123" 2) "0" 3) "2" 4) "6" 5) "5" 6) "4"
命令LREM,从列表左边移除几个给定的元素
127.0.0.1:6379> lrange l_dest 0 -1 1) "4" 2) "0" 3) "123" 4) "0" 5) "2" 6) "6" 7) "5" 8) "4" 127.0.0.1:6379> lrange l_dest 0 -1(最左边的0被移除) 1) "4" 2) "123" 3) "0" 4) "2" 5) "6" 6) "5" 7) "4" 127.0.0.1:6379> lpush l_dest 4 (integer) 8 127.0.0.1:6379> lrem l_dest 2 4(移除了左边的两个4) (integer) 2 127.0.0.1:6379> lrange l_dest 0 -1 1) "123" 2) "0" 3) "2" 4) "6" 5) "5" 6) "4"
命令LSET,给某个列表的第几个索引的元素设置值
127.0.0.1:6379> lset l_dest 1 000 OK 127.0.0.1:6379> lrange l_dest 0 -1 1) "123" 2) "000" 3) "2" 4) "6" 5) "5" 6) "4"
命令LTRIM,修剪列表
127.0.0.1:6379> lrange l_dest 0 -1 1) "123" 2) "000" 3) "2" 4) "6" 5) "5" 6) "4" 127.0.0.1:6379> ltrim l_dest 1 2(只保留index1到index2之间的元素) OK 127.0.0.1:6379> lrange l_dest 0 -1 1) "000" 2) "2"
命令RPOP,从右侧弹出元素
127.0.0.1:6379> lrange l_dest 0 -1 1) "000" 2) "2" 127.0.0.1:6379> rpop l_dest "2" 127.0.0.1:6379> lrange l_dest 0 -1 1) "000"
命令RPOPLPUSH,从原列表的右侧弹出元素,加入到给定列表的左边
127.0.0.1:6379> rpoplpush l_dest l_source "000" 127.0.0.1:6379> lrange l_dest 0 -1 (empty list or set) 127.0.0.1:6379> lrange l_source 0 -1 1) "000" 2) "3" 3) "2"
命令RPUSHX,若是列表存在就从右侧推入元素
127.0.0.1:6379> rpushx l_dest1 haha (integer) 0 127.0.0.1:6379> rpushx l_source haha (integer) 4