深入了解redis字符串,列表,散列和有序集合命令,了解发布,订阅命令和其他命令。
一,字符串
1.字符串可以存储3种类型的值
字符串,整数,浮点数
2.运算命令列表
incr : incr key-name ---将键存储的值加上1
decr: decr key-name ----将键存储的值减去1
incrby: incrby key-name amount ---将键存储的值加上整数amount
decrby : decrby key-name amount ----将键存储的值减去整数amount
incrbyfloat: incrbyfloat key-name amount ---将键存储的值加上浮点数amount。
注:如果键的存储值不能解释为十进制整数或浮点数,那么redis会返回一个错误,如果用户对一个不存在的键或者一个保存了空串的键执行自增或者自减操作,会把这个值当做0处理。
3.处理子串命令列表
append :append key-name value ---将值value追加到给定键key-name当前存储值得后面。
getrange: getrange key-name start end -- 获取一个由偏移量start至偏移量end范围内所有字符组成的子串,包括start和end在内。
setrange: setrange key-name offset value -- 将从start偏移量开始的子串设置给定值
getbit: getbit key-name offset --将字符串看作是二进制位串,并返回位串中偏移量为offset的二进制的值
setbit: setbit key-name offset value --将字节串看作成一个二进制位串,并将位串中偏移量为offset的二进制位的值设置为value
bitcount: bitcount key-name [start end] -- 统计二进制位串里面值为1的二进制的数量,如果给定了start偏移量和end的偏移量,那么只对偏移量范围内的二进制进行统计。
bitop : bitop opration dest-key key-name [key-name ...] 一对一个或多个二进制位串执行包括并(and),或(or),异或(xor),非(not) 在内的任意一种按位运算操作,并将计算得出的结果保存在dest-key键里面。
二,列表list<String>
1.常用的列表命令
rpush: rpush key-name value [value...] 将一个或多个值推入列表的右端
lpush: lpush key-name value[value...] 将一个或多个值推入列表的左端
rpop : rpop key-name 移除并返回列表最右端的元素
lpop : lpop key-name 移除并返回列表最左端的元素
lindex: lindex key-name offset 返回列表中偏移量为offset的元素。
lrange: lindex key-name start ned -- 返回列表从start偏移量到end偏移量范围内的所有元素,其中偏移量为start和偏移量end的元素也会包含在返回的元素之内。
ltrim ltrim key-name start end -- 对列表进行修剪,只保留从start偏移量到end偏移量范围内的元素,其中包含start和end偏移量的值。
阻塞式的列表命令
blpop: blpop key-name [key-name ...] timeout --从第一个非空列表中弹出位置最左端的元素或者在timeout 秒之内阻塞并等待可弹出的元素出现。
brpop :brpop key-name [key-name...] timeout --- 从第一个非空列表中弹出最右端的元素,或者在timeout秒之内阻塞并等待可弹出的元素出现。
rpoppush rpoppush source-key dest-key -- 从source-key列表中弹出位置最右端的元素,然后将这个元素推入dest-key 列表的最左端,并向用户返回这个元素,如果source-key为空,那么在timeout秒之内阻塞并等待可弹出的元素出现。
三。集合set<String>
1.常用的命令
add : add key-name item[item...] 将一个或多个元素添加到集合里面,并返回元素数量
srem: srem key-name item[item...] 从集合里面移除一个或多个元素,并返回被移除元素的数量。
sismember: sismember key-name time 检查元素item是否存在于集合key-name里
scard: scard key-name 返回集合包含的元素的数量。
smembers : smembers key-name 返回集合包含所有元素
srandmember: srandmember key-name[count] 从元素里面随机地返回一个或多个元素。当count为正数时,命令返回的随机数不会重复;让count为负数时,命令返回的随机元素可能会出现重复。
spop : spop key-name ---随机地移除集合中的一个元素,并返回被移除的元素。
smove: smove source-key dest-key item --- 如果集合source-key包含item,那么从集合source-key里面移除元素item,并将元素item添加到集合dest-key中,如果item被成功移除,那么返回1,否则0.
2.用于组合和处理多个集合
sdiff : sdiff key-name[key-name...] 返回那些存在于第一个集合,但不存在与其他集合中的元素
sdiffstore: sdiffstore dest-key key-name[key-name...] 将那些存在于第一个集合但并不存在与其他集合中的元素存储到dest-key键里面。
sinter: sinter key-name[key-name...] 返回那些同时存在于所有集合中的元素。
sinterstore: sinterstore dest-key key-name[key-name...] 将那些同时存在于所有集合中的元素存储在dest-key键里面。
sunion: sunion key-name [key-name...] 返回那些至少存在于一个集合中的元素。
sunionstore: sunionstore dest-key key-name[key-name...] 将那些至少存在于一个集合中的元素存储到dest-key键里面。
四。散列map<string,string>
1.用于添加和删除键值对的散列操作
hmget: hmget key-name key [key...] ---从散列里面获取一个或多个键的值。
hmset: hmset key-name key value[key value ...] ---为散列里面的一个或多个键设置值
hdel: hdel key-name key[key...] ---删除散列里面的一个或多个键值对,返回成功找到并删除的键值对数量。
hlen: hlen key-name ----返回散列包含的键值对数量。
2.散列的高级特性命令
hexists: hexists key-name key---检查给定的键是否存在散列中
hkeys: hkeys key-name ---获取散列包含的所有键
hvals: hvals key-name --获取散列包含的所有值
hgetall: hgetall key-name--获取散列包含的所有键值对
hincrby: hincrby key-name key increment --将键key存储的值加上整数increment
hincrbyfloat: hincrbyfloat key-name key increment --将键key存储的值加上浮点数increment.
五,有序集合treeSet<String> 有点不同,数据结构为key-value 先按key的整数值排序,再按照value按照字母大小排序
1.常用的命令
zadd: zadd key-name score member [sorce member] 将带有给定分值的成员添加到有序集合里面
zrem: zrem key-name memberp[member] 从一个有序集合里面移除给定的成员,并返回被移除成员的数量。
zcard: zcard key-name 返回有序集合包含的成员数量。
zincrby: zincrby key-name increment member --将member成员的分值加上increment
zcount: zcount key-name min max 返回分值介于min和max之间的成员数量。
zrank: zrank key-name member 返回成员member在有序集合中的排名。
zscore: zscore key-name member 返回成员member的分值。
zrange: zrange key-name start stop [withscores] 返回有序集合中排名介于start和stop之间的成员,如果给定了可选的withscores选项,那么命令会将成员的分值也一并返回
2.有序集合的范围型数据获取命令和范围型删除命令
zrevrank : zrevrank key-name member 返回有序集合里成员member的排名,成员按照分值从大到小排列。
zrevrange: zrevrange key-name start stop [withscores] 返回有序集合给定安排排名范围内的成员,成员按照分值从大到小排列。
zrangebyscore: zrangebyscore key min max [withscores] [limit offset count] 返回有序集合中,分值介于min 和max之间的所有成员。
zrevrangebyscore : zrevrangebuscore key max min [withscore][limit offset count] 获取有序集合中分值介于min和max之间的所有成员,并按照分值从大到小的顺序返回它们。
zremrangebyrank zremrangerank key-name start stop 移除有序集合中排名介于start和stop之间的成员
zremrangebyscore: zremrangebyscore key-name min max -- 移除有序集合中分值介于min和max之间的所有成员
zinterstore zinterstore dest-key key-count key [key...] [weights weight[weight...]][aggregate sum|min|max] -- 对给定的有序集合执行类似于集合机交集运算
zunionstore zinterstore dest-key key-count key [key...] [weights weight[weight...]][aggregate sum|min|max] -- 对给定的有序集合执行类似于集合机并集运算
六,发布和订阅
subscribe : subscribe channel [channel...] 订阅给定的一个或多个频道
unsubscribe: unsubscribe channel[channel...] 退订给定的一个或多个频道,如果没有指定频道,将退订所有频道。
publish : publish channel message 向给定频道发送消息。
psubscribe: psubscribe pattern[pattern...] 订阅与给定模式相匹配的所有频道
punsubscribe: punsubscribe pattern[pattern...] 退订指定模式,如果没有指定,则退订所有模式
七。排序
sort 对所有的数据结构有效。 安装指定规则排序
sort source-key [by pattern] [limit offset count][get pattern [pattern]][asc|desc][alphy][store dest-key]
八。基本的redis事务
有时候,我们需要向redis发送多个命令,为了不被打断的情况下对多个键执行操作,可以使用watch exec multi UNwatch discard
用法:
将需要发送的命令包在以multi开头 最后以exec结束,这样命令会一个接一个执行,直到执行所有命令完毕之后,redis才会处理其他客户端的命令。
九, 键的过期时间命令
persist : persist key-name 移除键的过期时间
ttl : ttl key-name 查看给定键距离过期还有多少秒
expire:expire key-name seconds 让给定键在指定秒数过期
expireat: expireat key-name timestamp 将给定键的过期时间设置为给定的unix时间戳
pttl : pttl key-name 查看给定键距离过期时间还有多少毫秒
pexpire: pexpire key-name milliseconds 让给定键在指定的毫秒数之后过期
pexpireat: pexpireat key-name timestamp-milliseconds 将一个毫秒级精度的unix时间戳设置为给定键的过期时间。
总结:redsi还有很命令, 这些命令是redis最重要的命令,掌握这些命令其实就差不多了。