Redis命令
3.1字符串
字符串可以存储三种类型的值:
1.字节串
2.整形
3.浮点数
INCRE
DECR
INCRBY
DECRBY
INCRBYFLOAT
MGET 获取多个key的值
MSET 设置多个key的值
只能对可以解释为整数或浮点数的值进行上述命令,若不能讲值解释为整数或者浮点数则返回错误。
STRLEN 字符串长度
APPEND
GETRANGE
SETRANGE
PSETEX 以毫秒为单位设置 key 的value和生存时间。
SETEX 以秒为单位设置 key 的value和生存时间。
一个命令涉及多字符串
MSET
MGET
MSETNX 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在
GETSET
位命令:
GETBIT
SETBIT
BITCOUNT key [start] [end] 可用于统计用户上线数
BITPOS key bit [start] [end] 返回位图中第一个值为 bit
的二进制位的位置
BITOP operation destkey key [key...] 对一个或多个保存二进制位的字符串 key
进行位元操作,并将结果保存到 destkey
上。 operation
可以是 AND
、 OR
、 NOT
、 XOR
BITFIELD key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP|SAT|FAIL]
后续讲解:使用字串操作和二进制位操作,配合WATCH MULTI EXEC命令使用,手动构建任何想要的数据结构。字符串存储简单的映射,某些情况下节省大量的内存。
3.2列表
1.常用命令
RPUSH
RPUSHX 将值 value
插入到列表 key
的表尾,当且仅当 key
存在并且是一个列表
LPUSH
LPUSHX
RPOP
LPOP
LINDEX
LRANGE
LTRIM
LLEN 返回key长度
LREM
LSET
LREM 移除 count个
列表中与 value
相等的元素。
LINSERT
2.
BLPOP
BRPOP
RPOPLPUSH
BRPOPLPUSH
阻塞弹出命令和弹出并推入命令 常见用于 消息传递 和 任务队列
3.3集合
1.常用命令
SADD
SREM
SISMEMBER 是否存在元素
SSCAN
SCARD 集合包含元素数量
SRANDMEMBER 随机返回元素 可选参数count为负数时可能返回重复元素
SPOP 随机移除
SMOVE 从一个集合中移除并添加到另一个集合
2. 用户组合和处理多个集合的命令
SDIFF 差集 存在于第一个集合 不存在与第二个集合
SDIFFSTORE
SINTER 交集
SINTERSTORE
SUNION 并集
SUNIONSTORE
3.4散列
1.常用命令
HMGET
HMSET
HDEL
HLEN 域数量
HSTRLEN 哈希键对应值的长度
2.
HSETNX
HEXISTS 散列中是否存在某个键
HKEYS 散列所有的键
HVALS 散列所有的值
HGETALL 散列所有键值对
HINCRBY
HINCRBYFLOAT
HSCAN 参考SCAN
3.5有序集合
1.常用命令
ZADD
ZREM
ZINCRBY
ZCOUNT 两个分数间的成员数量
ZCARD 返回基数(总数)
ZRANK 返回排名
ZSCORE 返回分数
ZRANGE
ZSCAN 参考SCAN
2.其他
ZREVRANK 返回排名 (从大到小顺序的排名)
ZREVRANGE
ZRANGEBYSCORE
ZREVRANGEBYSCORE
ZREMRANGEBYRANK 移除排名..之间的成员
ZREMRANGEBYSCORE 移除分值..之间的成员
ZINTERSTORE (可以操作一个集合,例如 集合内分值减半) 类似交集
ZUNIONSTORE 类似并集
ZRANGEBYLEX当有序集合的所有成员都具有相同的分值时, 有序集合的元素会根据成员的字典序(lexicographical ordering)来进行排序, 而这个命令则可以返回给定的有序集合键 key
中, 值介于 min
和 max
之间的成员。
如果有序集合里面的成员带有不同的分值, 那么命令返回的结果是未指定的(unspecified)。
使用场景 1. 取姓名A开头的所有姓名:ZRANGEBYLEX nameset [a (b 使用场景2. 取电话号码段(与取姓名类似)
ZREMRANGEBYLEX
ZLEXCOUNT
有序集合score都相同时按照key排序
其他命令
1. SORT 可以对列表,集合排序,根据alpha排序,基于外部数据元素排序并返回外部数据以及存储(唯一一个可以同时处理3种不同类型的数据的命令)
2. 事务:
WATCH MULTI EXEC UNWATCH DISCARD
DISCARD:
Flushes all previously queued commands in a transaction and restores the connection state to normal. If WATCH was used, DISCARD unwatches all keys watched by the connection.
取消事务,放弃执行事务块内的所有命令。 取消 WATCH 命令对所有 key 的监视。
如果在执行 WATCH 命令之后, EXEC 命令或 DISCARD 命令先被执行了的话,那么就不需要再执行 UNWATCH 了。
因为 EXEC 命令会执行事务,因此 WATCH 命令的效果已经产生了;而 DISCARD 命令在取消事务的同时也会取消所有对 key 的监视,因此这两个命令执行之后,就没有必要执行 UNWATCH 了。
3. 过期时间命令
PERSIST 移除过期时间
TTL 查看过期时间
EXPIRE 指定过期时间
EXPIREAT 指定UNIX时间戳为过期时间
PTTL 查看过期时间单位毫秒
PEXPIRE 指定过期时间单位毫秒
PEXPIREAT 指定UNIX时间戳为过期时间 单位毫秒
4.
SCAN SSCAN HSCAN ZSCAN 都用于增量迭代 (COUNT 参数只是一种提示,但是大多数情况下有效)
每次返回少量的元素,不会像KEYS、SMEMBERS命令一样,当数据库中键很多,集合项很多时,阻塞redis服务器。
在对键进行增量迭代过程中,如果从开始遍历到结束期间,一直存在于数据集,SCAN总会在某次迭代中返回这个元素。
但是SCAN也存在如下缺点:
多次返回同一个元素,需要客户端排重
元素在迭代过程中新加入到reids中,或者迭代过程中删除,则可能会返回这个元素,也可能不会返回。