1.基本的命令
1.1 dbsize命令
查看当前数据库的key数量
dbsize
1.2 keys命令
查看所有key
keys *
keys支持正则表达式
1.3 exists命令
查看key是否存在,存在返回1,不存在返回0
exists key1
1.4 move命令
移动当前数据库的key到别的数据库中,转移成功返回1,否则返回0
move key1 1
到第1个数据库中查看(初始有16个数据库,从0开始。默认是第0个数据库)
1.5 del命令
删除指定的key,若key不存在则忽略,返回删除的key数量
1.6 expire命令
设置key的过期时间,超过时间后,将会自动删除该key。
1.7 expipeat命令
作用与expipe命令相同,都用于为key设置生存时间。不同在于expipeat命令接受的时间参数是UNIX时间戳
时间戳的知识我不是很懂这里不作示范
1.9 persist命令
移除给定key的生存时间,将这个 key 从带生存时间 key 转换成一个不带生存时间、永不过期的 key 。
1.10 ttl命令
返回key剩余的过期时间。 这种反射能力允许Redis客户端检查指定key在数据集里面剩余的有效期。
如果key不存在或者已过期,返回 -2
如果key存在并且没有设置过期时间(永久有效),返回 -1 。
上面已经演示不作示范。
pexpire、pexpireat、ptll作用分别与expire、expireat、tll类似,只是前者单位是毫秒,后者是秒。
以上是常用的命令所以做了笔记,以便加深记忆。要更深入了解命令可以查看中文官网http://www.redis.cn/commands.html。
2.String类型的基本操作
2.1 append命令
如果 key 已经存在,并且值为字符串,那么这个命令会把 value 追加到原来值(value)的结尾。 如果 key 不存在,那么它将首先创建一个空字符串的key,再执行追加操作,这种情况 APPEND 将类似于 SET 操作。
2.2 strlen命令
返回key的string类型value的长度。如果key对应的非string类型,就返回错误。如果key不存在,返回0。
2.3 incr命令!
对存储在指定key的数值执行原子的加1操作。
如果指定的key不存在,那么在执行incr操作之前,会先将它的值设定为0。
如果指定的key中存储的值不是字符串类型或者存储的字符串类型不能表示为一个整数,那么执行这个命令时服务器会返回一个错误:
(eq:(error) ERR value is not an integer or out of range)。
这个操作仅限于64位的有符号整型数据。
2.4 incrby命令
将key对应的数字加decrement。如果key不存在,操作之前,key就会被置为0。
2.5 decr命令
对key对应的数字做减1操作。如果key不存在,那么在操作之前,这个key对应的值会被置为0。
2.6 decrby命令
将key对应的数字减decrement。如果key不存在,操作之前,key就会被置为0。
2.7 getrange命令
返回key对应的字符串value的子串,这个子串是由start和end位移决定的(两者都在string内)。可以用负的位移来表示从string尾部开始数的下标。所以-1就是最后一个字符,-2就是倒数第二个,以此类推。
这个函数处理超出范围的请求时,都把结果限制在string内。
2.8 setrange命令
这个命令的作用是覆盖key对应的string的一部分,从指定的offset处开始,覆盖value的长度。如果offset比当前key对应string还要长,那这个string后面就补0以达到offset。不存在的keys被认为是空字符串,所以这个命令可以确保key有一个足够大的字符串,能在offset处设置value。
2.9 setex命令
设置key对应字符串value,并且设置key在给定的seconds时间之后超时过期。
SETEX是原子的,也可以通过把上面两个命令放到MULTI/EXEC块中执行的方式重现。相比连续执行上面两个命令,它更快,因此当Redis当做缓存使用时,这个操作更加常用。
2.10 setnx命令
将key设置值为value,如果key不存在,这种情况下等同SET命令。 当key存在时,什么也不做。SETNX是”SET if Not eXists”的简写。
2.11 mset命令
对应给定的keys到他们相应的values上。MSET会用新的value替换已经存在的value,就像普通的SET命令一样。如果你不想覆盖已经存在的values,请参看命令MSETNX。
MSET是原子的,所以所有给定的keys是一次性set的。客户端不可能看到这种一部分keys被更新而另外的没有改变的情况。
2.12 mget命令
返回所有指定的key的value。对于每个不对应string或者不存在的key,都返回特殊值nil。正因为此,这个操作从来不会失败。
2.13 msetnx命令
对应给定的keys到他们相应的values上。只要有一个key已经存在,MSETNX一个操作都不会执行。 由于这种特性,MSETNX可以实现要么所有的操作都成功,要么一个都不执行,这样可以用来设置不同的key,来表示一个唯一的对象的不同字段。
2.14 getset命令
自动将key对应到value并且返回原来key对应的value。如果key存在但是对应的value不是字符串,就返回错误。
3.List类型的基本操作
3.1 lpush命令
将所有指定的值插入到存于 key 的列表的头部。如果 key 不存在,那么在进行 push 操作前会创建一个空列表。 如果 key 对应的值不是一个 list 的话,那么会返回一个错误。
可以使用一个命令把多个元素 push 进入列表,只需在命令末尾加上多个指定的参数。元素是从最左端的到最右端的、一个接一个被插入到 list 的头部。 所以对于这个命令例子 LPUSH mylist a b c,返回的列表是 c 为第一个元素, b 为第二个元素, a 为第三个元素。
3.2 rpush命令
向存于 key 的列表的尾部插入所有指定的值。如果 key 不存在,那么会创建一个空的列表然后再进行 push 操作。 当 key 保存的不是一个列表,那么会返回一个错误。
可以使用一个命令把多个元素打入队列,只需要在命令后面指定多个参数。元素是从左到右一个接一个从列表尾部插入。 比如命令 RPUSH mylist a b c 会返回一个列表,其第一个元素是 a ,第二个元素是 b ,第三个元素是 c。
3.3 lrange命令
返回存储在 key 的列表里指定范围内的元素。 start 和 end 偏移量都是基于0的下标,即list的第一个元素下标是0(list的表头),第二个元素下标是1,以此类推。
偏移量也可以是负数,表示偏移量是从list尾部开始计数。 例如, -1 表示列表的最后一个元素,-2 是倒数第二个,以此类推。
3.4 lpop命令
移除并且返回 key 对应的 list 的前count个元素。不输count时默认为1.
3.5 rpop命令
移除并返回存于 key 的 list 的最后count个元素。不输count时默认为1
3.6 lindex命令
返回列表里的元素的索引 index 存储在 key 里面。 下标是从0开始索引的,所以 0 是表示第一个元素, 1 表示第二个元素,并以此类推。 负数索引用于指定从列表尾部开始索引的元素。在这种方法下,-1 表示最后一个元素,-2 表示倒数第二个元素,并以此往前推。
当 key 位置的值不是一个列表的时候,会返回一个error。
3.7 llen命令
返回存储在 key 里的list的长度。 如果 key 不存在,那么就被看作是空list,并且返回长度为 0。 当存储在 key 里的值不是一个list的话,会返回error。
3.8 lrem命令
从存于 key 的列表里移除前 count 次出现的值为 value 的元素。 这个 count 参数通过下面几种方式影响这个操作:
- count > 0: 从头往尾移除值为 value 的元素。
- count < 0: 从尾往头移除值为 value 的元素。
- count = 0: 移除所有值为 value 的元素。
比如, LREM list -2 “hello” 会从存于 list 的列表里移除最后两个出现的 “hello”。
需要注意的是,如果list里没有存在key就会被当作空list处理,所以当 key 不存在的时候,这个命令会返回 0。
3.9 ltrim命令
修剪(trim)一个已存在的 list,这样 list 就会只包含指定范围的指定元素。start 和 stop 都是由0开始计数的, 这里的 0 是列表里的第一个元素(表头),1 是第二个元素,以此类推。
例如: LTRIM foobar 0 2 将会对存储在 foobar 的列表进行修剪,只保留列表里的前3个元素。
start 和 end 也可以用负数来表示与表尾的偏移量,比如 -1 表示列表里的最后一个元素, -2 表示倒数第二个,等等。
3.10 rpoplpush命令
RPOPLPUSH source destination
原子性地返回并移除存储在 source 的列表的最后一个元素(列表尾部元素), 并把该元素放入存储在 destination 的列表的第一个元素位置(列表头部)。
例如:假设 source 存储着列表 a,b,c, destination存储着列表 x,y,z。 执行 RPOPLPUSH 得到的结果是 source 保存着列表 a,b ,而 destination 保存着列表 c,x,y,z。
如果 source 不存在,那么会返回 nil 值,并且不会执行任何操作。 如果 source 和 destination 是同样的,那么这个操作等同于移除列表最后一个元素并且把该元素放在列表头部, 所以这个命令也可以当作是一个旋转列表的命令。
3.11 lset命令
LSET key index value
设置 index 位置的list元素的值为 value。 当index超出范围时会返回一个error。
3.12 linsert命令
LINSERT key BEFORE|AFTER pivot value
把 value 插入存于 key 的列表中在基准值 pivot 的前面或后面。
当pivot不存在时,返回-1。
当 key 不存在时,这个list会被看作是空list,任何操作都不会发生,返回0。
当 key 存在,但保存的不是一个list的时候,会返回error。