redis自学2----redis命令

1.redis常用的客户端命令行参数(redis-cli)

1)-h:指定被连接的ip
2)-p:指定连接的端口
3)-a:连接的用户密码
4)--stat:获取redis的诊断数据
5)--bigkeys:对redis中的key进行采样,寻找较大的key,能根据采样获得更多的数据统计

2.String类型(字符串、整数、浮点数或者任何二进制格式数据)常用命令

1)set key value [EX seconds] [PX milliseconds] [NX|XX]:为key设置值value
	*EX代表设置超时时间,单位为秒
	*PX同样代表超时时间,单位为毫秒
	*NX代表只有当key不存在时才会设置值
	*XX代表只有key存在时才会设置
	*如果成功,返回ok,失败返回空(nil)
2)get key:返回key对应的值,key不存在时返回空
3)mget key [key ...]:返回多个key的value
4)mset key value [key value ...]:设置多个key value值
	*如果某个key存在,则新值覆盖旧值
	*整个操作是原子操作,要么同时成功,要么同时失败
	*如果key存在不想覆盖,采用msetnx命令
	*总是返回ok,此操作不会失败
5)append:字符串拼接
	*如果key已经存在,并且值是string类型,就把新的值追加到原来值的后面
	*如果key不存在,就类似set的功能
	*返回的是字符的长度
6)incr key:自增操作
	*对值进行加一操作,但是只有当值是integer类型才能操作,如果不是就会出错
	*最大值为64位有符号值
	*返回值为加完的结果
	*此操作为原子操作
7)decr key:自减操作
	*对值进行减一操作,但是只有当是integer类型才能操作,如果不是就会出错
	*如果key不存在,会对此key赋值为0,再做操作
	*操作能操作的数被限制?64位有符号值
	*返回操作后的结果值
8)decrby key decrment:对值进行减法,减去指定的值
	*对值进行减法操作,减去decrement这个值,但是只有当值是integer类型才能操作,如果不是就会出错
	*与decr类似
9)incrby key increment:对值进行加法,加上指定的值
	*对值进行加法操作,加上decrement这个值,但是只有当值是integer类型才能操作,如果不是就会出错
	*与incr类似
10)incrbyfloat key increment:对浮点值进行加法,加上指定的值
	*与incrby规则一样,但是操作的是浮点数,increment可以是整数或浮点数
	*返回操作后的结果值
11)getset key value:设置并获取旧值
	*原子操作,设置新值的时候,把旧值返回给调用者
	*如果key不是String类型就会报错
	*此命令一般与incr命令联合使用
12)strlen key:获取key对应value的字符串长度
	*负号算一个长度
	*如果值不是string类型,就会报错
	*key不存在时返回0
13)getrange key start end:截取字符串
	*2.0版本前叫做substr
	*返回字符串类型值的子串
	*start和end的值可以取负数,表示倒数第几个,-1表示最后一个字符
	*返回区间字符串
14)getbit key offset:获取字符串二进制对应位置的值
	*可以获得一个字符串类型键指定位置的二进制位的值(0或1),索引从0开始
	*例如:set a 0,redis会将0看成字符串“0”,对应的二进制为00110000(十进制的48),getbit a 2和getbit a 3会返回1,其余返回0(最高位为第0位)
15)setbit key offset value:设置字符串对应二进制位上的值
	*设置字符串类型键指定位置的二进制位的值,返回值是该位置的旧值
16)bitcount key:返回该key对应value的二进制中为1的个位数

3.list类型(链表)常用命令

1)lpush key value [value ...]:从队列的左边插入值
	*把所有的值从list的头部插入,如果key不存在就创建一个空的队列
	*如果key不是list类型,则会出现错误
	*元素从左到右依次插入
	*返回list的长度
2)lpushx key value:key不存在不会创建
	*从list头部插入一个值,当key不存在时则不会产生插入动作
	*返回list的长度
3)lpop key:从左边移除value
	*移除list的第一个节点,并返回节点数据
4)blpop key [key ...] timeout:从队列左边阻塞式弹出元素
	*以阻塞的方式从以上的key里面移除并返回第一个值,只移除和返回第一个非空的key
	*timeout的单位是秒,如果是0,则表示一直阻塞
	*只要list的长度为0或者key不存在就会阻塞
	*当key是多个时,比如blopo key1 key2,则只要有一个key对应的list不是非空,则不会阻塞
	*返回值依次包含key、弹出的值、阻塞的时长
	*超时时,如果还没有值可以返回,则返回nil
5)llen key:返回对应key的list中值得数量,如果key不存在或者list为空,则返回0
6)rpush key value [value ...]:从队列右边插入值
	*把所有的值从list尾部插入,如果key不存在就创建一个空的队列
	*如果key不是list类型,则会出现错误
	*元素从右往左依次插入
	*返回list的长度
7)rpushx key value:key不存在不会创建
	*从list尾部插入一个值,当key不存在时,不会产栺插入动作
	*返回list的长度
8)rpop key:从右边移除value
	*移除list的最后一个节点,并返回节点数据或者nil
9)brpop key [key ...] timeout:从队列右边阻塞式弹出元素(与blpop一样)
10)rpoplpush source destination:
	*从source对应的key的list尾部移除一个值,并且加入到destination指定的list的头部
	*此操作是一个原子操作
	*如果source的list不存在,则返回nil,但是不会做任何操作
	*如果source和destination是一样的,则等于把list的尾部数据插入到头部
	*返回被弹出和插入的数据
11)brpoplpush source destination timeout:阻塞式
	*功能与rpoplpush相似,但是当source为空时,将会进行阻塞
	*timeout单位为秒,如果为0表示一直阻塞
12)lindex key index:获取指定下标的值
	*返回key指定的队列中位置为index的值
	*下标与数组一样,从0开始,负数表示倒数(-1表示倒数第一个)
13)linsert key before|after pivot value
	*把value的值插入key对应的list中去,位置在pivot这个值得前面(before)或者后面(after)
	*如果key不存在,则不会产生任何操作
	*如果pivot对应的值不存在则返回-1,否则就返回插入后的list的长度
	*如果pivot对应的值存在多个,则取左边第一个
14)lrange key start stop:队列左边遍历
	*返回一个区间的值,从list的头(左)到尾(右),start和stop为下标
	*如果start大于list长度,就会返回空
	*如果stop大于list长度,则会以list最后一个值为准
	*下标与数组一样,从0开始,负数表示倒数(-1表示倒数第一个)
15)lrem key count value:删除
	*删除值等于value的count个元素
	*如果count大于0,则从头到尾数(从左到右)
	*如果count小于0,则从尾到头数(从右到左)
	*如果count等于0,则删除所有的值等于value的元素
16)ltrim key start stop:裁剪
	*对key指定的list进行裁剪,即取子集
	*如果start>list的长度或者start>end,将会返回一个空列表,然后导致key被删除
	*如果end大于list的长度,则取list的长度
	*执行完成返回ok
	*下标与数组一样,从0开始,负数表示倒数(-1表示倒数第一个)
17)lset key index value:修改对应下标的值
	*修改key对应的list中,位置为index的元素的值为value
	*当index超过list的范围,将会出现错误

4.set类型(无序集合,类似hashSet)常用命令

1)sadd key member [member ...]:向集合内添加元素
	*将一个或多个member元素加入到集合key中,已经存在集合的member元素将被忽略
	*如果key不存在,则创建一个只包含member元素作为成员的集合
	*当key不是集合类型时,返回一个错误
	*返回被添加到集合中的新元素的数量,不包括被忽略的元素
2)sismember key member:判断是否是集合中的元素
	*判断member元素是否是集合key中的成员
	*如果member元素是集合的成员,返回1
	*如果member元素不是集合的成员,或者key不存在,返回0
3)spop key:随机移除元素
	*移除并返回集合中的一个随机元素
	*当key不存在或key是空集时,返回nil
4)srandmember key [count]:随机返回元素,不会删除
	*如果命令执行时,只提供了key参数,那么返回集合中的一个随机元素
	*redis 2.6之后,可接受count参数
	*如果count为正数,且小于集合基数,那么命令返回一个包含count个元素的数组,数组中的元素各不相同;如果count大于等于集合基数,那么返回整个集合
	*如果count为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为count的绝对值
5)srem key member [member ...]:移除集合元素
	*移除集合key中的一个或多个member元素,不存在的member元素会被忽略
	*当key不是集合类型,返回一个错误
	*redis 2.4之前,srem只接受单个member值
	*返回被成功移除元素的数量,不包括被忽略的元素
6)smove source destination member:
	*将member元素从source集合移动到destination集合
	*该操作是原子操作
	*如果source集合不存在或不包含指定的member元素,则smove命令不执行任何操作,仅返回0;否则member元素从source集合中被移除,并添加到destination集合中去
	*当destination集合已经包含member元素时,smove命令只是简单地将source集合中的member元素删除
	*当source或destination不是集合类型是,返回一个错误
	*如果member元素被成功移除,返回1。如果member元素不是source集合元素并且没有任何操作对destination集合执行,那么返回0
7)smembers key:返回集合key中所有元素
	*生产环境不可使用
	*不存在的key被视为空集合
8)sscan key cursor [match pattern] [count count]:类似scan命令
9)sinter key [key ...]:
	*只有一个key时,返回指定全部成员;如果有多个key,则返回指定集合的交集
	*不存在的key被视为空集
	*当给定的所有集合中有一个空集时,结果也为空集
10)sinterstore destination key [key ...]:取交集,将结果保存到指定集合destination中
	*这个命令类似于sinter key [key ...]命令,但它将结果保存到destination集合,而不是简单地返回结果集
	*如果destination集合已经存在,则将其覆盖
	*destination可以是key本身
	*返回结果集中的成员数量
11)sunion key [key ...]:并集
	*只有一个key时,返回指定全部成员;如果有多个key,则返回指定集合的并集
	*不存在的key被视为空集
	*返回并集成员的列表
12)sunionstore destination key [key ...]:取并集,将结果保存到指定集合destination中
	*这个命令类似于sunion key [key ...]命令,但它将结果保存到destination集合,而不是简单地返回结果集
	*如果destination集合已经存在,则将其覆盖
	*返回结果集中的成员数量
13)sdiff key [key ...]:
	*只有一个key时,返回指定全部成员;如果有多个key,则返回指定集合之间的差集
	*不存在的key被视为空集
	*返回交集成员的列表
14)sdiffstore destination key [key ...]:
	*这个命令类似于sdiff key [key ...]命令,但它将结果保存到destination集合,而不是简单地返回结果集
	*如果destination集合已经存在,则将其覆盖
	*destination可以是key本身
	*返回结果集中的成员数量

5.hash类型(包含键值对的列表)常用命令

1)hset key field value:
	*Key代表的是一个hash表,field为hash表的key,value为hash表中key对应的value
	*如果key不存在,则创建一个key及对应的hash表
	*如果field存在,则把value覆盖原来的值
	*如果field是新加入,并且设置成功,则返回1;如果field已经存在,成功更新旧值,则返回0
2)hmset key field value [field value ...]:
	*与hset类似,但是一次设置多个值
	*返回ok
3)hsetnx key field value:
	*Key代表的是一个hash表,field为hash表的key,value为hash表中key对应的value
	*field不存在时才设置
	*如果field不存在,则设置值,返回1;如果field存在,则返回0,不做任何操作
4)hkeys key:
	*获取key对应的map的所有key
	*返回key的列表
5)hlen key:
	*获取key对应的map的field的数量
6)hget key field:
	*获取某个field的值,key代表的是一个hash表,field为hash表的key
	*如果key不存在或者field不存在,则返回nil,否则返回值
7)hmget key field [field ...]:批量获取值
	*获取key对应的map的多个field的值
	*如果key不存在或则field不存在,返回nil,否则返回值列表
8)hvals key:
	*返回key对应的map的所有值列表
9)hstrlen key field:
	*返回field对应的值的长度
	*当key不存在或者field不存在,则返回0
10)hdel key field [field ...]:删除
	*删除key对应的map的field,可以删除多个field
	*此操作是原子性操作
	*返回删除的值得数量
11)hexists key field:判断是否存在
	*判断key指定的map中是否存在field属性
	*如果key不存在或则field不存在则返回0,否则返回1
12)hgetall key:
	*返回key对应的map的所有的key-value对,按照key然后下一行是value的形式展示
13)hincrby key field increment:
	*对field指定的值加上increment,但是值必须是integeter类型,范围在64位有符号的数
	*返回增加后的结果
14)hincrbyfloat key field increment:
	*对field指定的值加上increment,但是原来的值必须是float类型,范围在64位有符号数
	*如果key不存在或则field不存在则返回0,否则返回1
15)hscan key cursor [match pattern] [count count]:
	*与scan类似,但是迭代的是key对应的map里面的值

6.zset类型(有序集合,成员member和分数sorce之间的有序映射)常用命令

1)zadd key [nx|xx] [ch] [incr] score member [[score member] [score member] ...]:添加分值以及对应成员
	*将一个或多个member元素及其score值加入到有序集key当中
	*如果某个member已经是有序集的成员,那么更新这个member的score值,并通过重新插入这个member元素来保证该member在正确的位置上
	*score值可以是整数值或双精度浮点数
	*如果key不存在,则创建一个空的有序集并执行zadd操作
	*当key不是有序集类型时,返回一个错误
	*xx表示只有member存在才能操作,也就是只更新score
	*nx表示不更新,只做插入,即如果有成员存在,此操作会失败,不存在就加入
	*ch表示返回的值不是新怎元素的数量而是发生变化的元素的数量,包括:新怎元素和已经存在的但是score被修改的元素
	*incr当指定此属性时,后面只能有一对score-member,表示给member成员的score增加对应的值
	*redis 2.4之前,zadd每次只能添加一个元素
2)zscore key member:查询分值
	*返回有序集key中,成员member的score值
	*如果member元素不是有序集key的成员,或key不存在,返回nil
	*返回值是字符串类型
3)zincrby key increment member:
	*为有序集key的成员member的score值加上增量increment
	*increment可以是负数值,当其为负数时score会减去对应的值
	*当key不存在或member不是key的成员时,zincrby key increment member等同于zadd key increment member
	*当key不是有序集时,返回一个错误
	*score可以是整数值或双精度浮点数
	*返回member成员的新score值,以字符串形式表示
4)zcard key:
	*返回有序集key的基数(member的个数)
	*key不是有序集合类型时报错
	*key不存在时返回0
5)zcount key min max:
	*返回有序集key中,score值在min和max之间(包含)的成员数量
6)zrange key start stop [withscores]:
	*返回有序集key中,指定区间内的成员列表(withscores输出时带上分数)
	*成员的位置按score值递增排序,相同的score按字典顺序排序
	*如果start大于list长度,就会返回空
	*如果stop大于list长度,则会以list最后一个值为准
	*下标与数组一样,从0开始,负数表示倒数(-1表示倒数第一个),且都包含
7)zrevrange key start stop [withscores]:功能与zrange一样,不同点是顺序按score递减
8)zrangebyscore key min max [withscores] [limit offset count]:
	*功能与zrange一样,min和max用来筛选分数score,即取分数在min和max之间的所有成员
	*可以通过-inf和+inf表示无穷小和无穷大
	*limit offset count与mysql的分页一样
9)zrevrangebyscore key max min [withscores] [limit offset count]:功能与zrangebyscore一样,不同点是按score倒序
10)zrank key member:
	*返回有序集key中成员member的排名,score按照递增排序进行计算
	*排名从0开始,与数组一样
	*如果member是有序集key的成员,返回member的排名;如果member不是有序集key的成员,返回nil
	*key不是有序集报错
11)zrevrank key member:与zrank功能一样,不同是按照score倒序计算
12)zrem key member [member ...]:
	*移除一个或多个成员,不存在忽略
	*key不是有序集类型时,返回一个错误
	*redis 2.4之后才可删除多个
	*返回移除成员的数量
13)zremrangebyrank key start stop:
	*移除有序集key中,成员排名(rank)区间内的所有成员,排名按score正序来计算,包含start和stop下标
	*返回被移除成员的数量
14)zremrangebyscore key min max:删除score在min和max之间(包含)的成员
15)zrangebylex key min max [limit offset count]:
	*该命令用于所有成员的分数都相同时,采用字典顺序进行排序时
16)zlexcount key min max:所有成员分数都相同时,返回min和max范围内的元素数量
17)zremrangebylex key min max:分值相同时删除
18)zscan key cursor [match pattern] [count count]:与scan相同
19)zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]:
	*计算一个或多个有序集的并集,key的数量必须用numkeys来指定,并将结果存储到destination中
	*默认情况,结果集中某个成员的score值是所有给定集合下该成员score值之和(可通过aggregate来指定)
	*weigths选项可以为每一个有序集指定一个乘法因子(在进行aggregate之前乘上该因子)
	*返回保存到destination结果集中的基数
20)zinterstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]:
	*功能与zunionstore唯一不同点是取交集

7.其余操作

1)del key [key ...]:删除
	*删除指定的key,如果key不存在,对此key的操作将会忽略
	*返回被删除的key的个数
2)dump key:
	*按照rdb的存储格式把指定的key的值序列化并返回给客户端,次序列化值里面不包括ttl信息
	*序列化的值中包含校验码
	*不同版本的rdb实现可能存在差异,所以此处序列化的数据可能不对
	*key不存在就返回nil
3)restore key ttl serialized-value [replace]
	*把通过dump命令序列化的值再存进去
	*如果没有带replace,且key已经存在,会出现错误
	*会检查校验值(checksum),如果不满足会返回错误
	*成功返回ok
4)exists key [key ...]:
	*判断key是不是存在,如果存在,则返回值加一
	*从3.03版本开始支持多个key,以前版本只支持一个
	*如果key重复,则返回值会重复判断和加一
5)expire key seconds:设置超时时间
	*设置key的超时时间,单位是秒;当达到超时时间后,key会被删除
	*这个超时时间不能被del、set、getset和*store命?修改或者改变,其它命?并?会改变超时设置或者超时时长
	*可以通过命令persist把超时设置取消
	*当key被rename命令修改后,超时设置的特性还是不会改变
	*设置成功返回1,key不存在或者超时时间设置失败返回0
6)persist key:
	*移除key的超时设置
	*返回1表示移除成功,返回0表示key不存在或者key上没有设置超时时间
7)expireat key timestamp
	*设置key的超时时间,与expire相似,但是设置的是精确时间
	*设置成功返回1,key不存在或者超时时间设置失败返回0
8)keys pattern:
	*返回符合pattern的所有的key
	*在生产环境上尽量少用,除非数据比较少,因为此操作会影响性能,可以用scan或者sets来达到查找key的业务需求
	* *代表任意字符,?代表单个字符,[ae]代码a或者e
	*[^e]代表不等于e,[a-d]代表a,b,c,d
9)ttl key:查看超时时间
	*返回key对应的超时时间,还剩余多少时间
	*如果key不存在,返回-2
	*如果key上没有设置超时时间,返回-1
10)pttl key:
	*与ttl功能一致,但是返回的是毫秒
11)scan cursor [match pattern] [count count]:
	*基于游标的方式返回当前数据库的key,因为每次返回的数据不多,也不会阻塞服务器,所以可以在生产环境中使用
	*cursor表示的是游标的位置,一般从0开始,返回的数据中第一行代表的就是下一次游标的位置,当返回的下一行游标是0时,代表本次迭代全部完成;此游标值不是一个连续标准值,比如5,10,15是连续标准
	*MATCH pattern类似keys中模式一样,返回指定模式的迭代游标
	*count代表每次迭代返回的数据条数,默认是10,但是它只是一个提示,实现时并没有严格的保证,实际返回值可能会比这个值多一些,但是不会多太多
	*与keys或者smembers命令相比,scan返回的结果不稳定,在执行迭代的过程中,如果key发生变化,比如删除或者新增,则返回的结果可能存在以下几个问题:1.可能会返回重复的Key,所以,使用此命令时,业务系统需要判断重复;2.如果在迭代过程中,有key被删除了,但是在迭代完成前没有被添加进来,则此key并不会出现在迭代中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值