字符串类型
-
set key value [ex 秒] [px 毫秒] [nx] | [xx]
如:set a 1 ex 10, 10秒有效 set a 1 px 9000, 9秒有效 注: ex/px 不要同时使用,否则以后面的有效期为准 nx: 表示key不存在时,执行操作 xx: 表示key存在时,执行操作 -
mset (multi set) 一次性设置多个键值
mset key1 v1 key2 v2 ... -
获取key的
get key -
获取多个key的值
mget key1 key1 ...keyn -
把字符串的offset偏移字节,改成value
setrange key offset value 例: set great hello setrange great 2 x get great 得到 hexlo 注意: 如果偏移量大于字符长度,该字符自动补0x00(\x00) hello\x00\x00!!!! -
把value追加到key的原值上
append key value -
获取字符串中[start,stop]范围的值,包括start和stop
getrange key start stop 备注: 对于字符串的下标:左数从0开始,右数从-1开始 注意: 1.start >= length 返回 “” 2.stop >= length 截取字符串结尾 3.如果start所处位置在stop右边,返回空字符串 -
获取旧值并设置新值
getset key newvalue -
自增和自减
incr key 自增 + 1 decr key 递减 - 1 incrby key number 增加多少 decrby key number 减少多少 incrbyfloat key floatnumber 增加浮点数 -
设置offset对应二进制位上的值
setbit key offset value 返回:该位上的旧值 注意: 1.如果offset过大,则回你在中间填充0 2.offset 最大2^32-1可推出最大的字符串为512M -
对key1,key2,keyN作operation,并将结果保存到destkey上
bitop operation destkey key1 [key2...] 备注:operation可以是: AND、OR、NOT、XOR 注意:对于NOT操作,key不能多个 例: setbit lower 7 0 setbit lower 2 1 set char Q bitop or char char lower get char 变为了小写
list类型
-
向列表中添加数据
lpush key value : 向左添加 rpush key value : 向右添加 -
返回链表中[start,stop]中的元素
lrange key start stop 规律:左数从0开始,右数从-1开始 -
返回并删除链表元素
lpop key : 返回并删除头部元素 rpop key : 返回并删除尾部元素 -
从key链表中删除value值
lrem key count value 注: 1.删除count的绝对值个value后即诶书 2.count>0 从表头删除 3.count<0 从表尾结束 -
剪切key对应的连接,切[start,stop]一段,并把该段重新赋给key
ltrim key start stop 注:包含start,stop -
返回index索引上的值
lindex key index -
计算链接表的元素个数
llen key -
在key链表中寻中‘search’,并在search值之前|之后插入value
linsert key after|before search value 注:一旦找到一呃search后,命令就结束了,因此不会插入多个value -
把source的尾部拿出来放在dest的头部,并返回该元素值
rpoplpush source destt 场景: task + bak 双链表完成安全队列,进行任务的分发 业务逻辑: 1.rpoplpush task bak 2.接收返回值,并做业务处理 3.如果成功,rpop bak清除任务,如果不成功,下次从bak表里取任务 -
等待弹出key的尾/头元素
brpop | blpop key timeout 备注: timeout为等待时间 如果timeout为0 ,则一直等待 场景:长轮询ajax,在线聊天时,能够用到
set集合结构及命令
-
set集合的特点:
1. 无序性 2. 唯一性 3. 确定性
注意: 在string和link(list)的命令中,可以通过range来访问string中的某几个字符 或某几个元素,但是,因为集合的无序性,无法通过下表或者范围来访问部分 元素。因此,想要查看元素,要么随机选一个,要么全选
-
在集合中增加元素
sadd key value [value ...] -
查看集合元素
smembers key -
删除集合中的元素
srem key value value1 value2 ... 返回值:删掉的个数,忽略不存在的元素 -
返回并删除集合中的随机一个元素
spop key -
随机获得集合中的一个元素
srandmember key -
判断某个元素是否在key集合中
sismember key value 返回: 1/0 -
返回集合中元素的个数
scard key -
把source中的value删除,并添加到dest集合中
smove source dest value -
求出key1,key2,key3三个集合中的交集,并返回
sinter key1 key2 key3 -
求出交集并保存到result集合中
sinterstore result key1 key2 key3 -
求出key1 key2 key3三个集合的并集,并返回
sunion key1 key2 key3 -
求多个集合的差集
sdiff key1 key2 key3 key1与key2 key3的差集(减去他们公共的部分,key1集合中剩下的元素)
有序集合的结构及命令
-
添加元素
zadd key score value1 score value2 说明: 有序集合会根据score来进行排序 -
查询集合中member的排名(升序 0 开始)
zrank key member -
查询member的排名(降序 0 开始)
zrevrank key memeber -
查询集合中,[start,stop]的元素,默认是升序排列
zrange key start stop [withscores] 从start 到 stop之间的 备注:withscores是把score打印出来 -
把集合降序排列,取名字[start,stop]之间的元素
zrevrange key start stop -
取score在[min,max]内的元素
zrangebyscore key min max [withscores] limit offset N 说明:跳过offset个,取N个 -
返回元素的个数
zcard key -
返回[min,max]区间内元素的数量
zcount key min max -
根据score来删除元素,删除score在[min,max]之间的
zremrangebyscore key min max -
根据排名删除元素,删除名次在[start,end]之间的
zremrangebyrank key start end -
指定名字删除元素
zrem key value -
求集合的交集等操作
zinterstore destination numkeys key1 [key2 ...] [weights weight [weight ...}] [aggregate sum | min | max] 说明: 1.聚合方法用:sum | min | max 2.聚合的结果:保存在destination中 问: 如果有交集,交集元素又有score,那么,score怎么处理? 答: aggregate sum : score 想加 aggregate min : score 求最小 aggregate max : score 求最大 另: 可以通过weight设置不同key的权重,交集时,score * weights -
求集合的并集等操作
用法同上 ⬆️ zunionstore
hash结构及命令
-
结构
相当于一个关联数组 field => value name yang age 18 height 180 -
把key中field域的值设为value
hset key field value 注: 如果没有field域,直接添加, 如果有,则覆盖原field上的值 -
设置多个field->value值到key中
hmset key field1 value1 [field2 value2 ...] 备注: 对应php理解为: $key = array(field1 => value1,field2 => valuew ...fieldN => valueN) -
返回key中的field域对应的值
hget key field -
查询多个key中field对应的值
hmget key field1 field2...fieldN -
返回key中所有field 和 value
hgetall key -
删除key中的field
hdel key field -
返回key中元素的数量
hlen key -
判断key中有没有field域
hexists key field -
把key中的field域的值增长整数型value
hinrby key field value -
把key中的field域的值增长浮点值value
hinrby float key field value -
返回key中所有的field
hkeys key -
返回key中所有value
hvals key
本文为作者原创,允许转载,同步于骚杨's Blog,转载请说明文章出处,欢迎关注
注:如果本篇博客有任何错误或建议,欢迎留言,我会及时跟进并更正内容!感谢大家~