Redis的常用命令和数据结构
Redis数据结构
字符串
字符串可以存储以下3种类型的值
- 字符串
- 整数
- 浮点数
常用命令:
- SET
- GET
- DEL
因为可以存储整数和浮点数,所以还可以对字符串执行自增和自减命令
- INCR
- DECR
- INCRBY
- DECRBY
- INCRBYFLOAT
字符串也可以像python一样操作子串
- APPEND
- GETRANGE
// 切片操作 GETRANGE key 0 -1
- SETRANGE
// 使用 val 替换 从n开始的字符串, 这里的 n 为正整数 SETRANGE key n val
还可以把字符串当成二进制位操作 (这里比较复杂,需要研究一下)
- GETBIT
- SETBIT
- BITCOUNT
- BITTOP
列表
常用命令:
- RPUSH
- LPUSH
- RPOP
- LPOP
- LINDEX
- LRANGE
- LTRIM
- LPOP
- LLEN
将一个列表的元素移动到另一个列表
- RPOPLPUSH
阻塞性的弹出命令和元素移动命令,这里的阻塞指的是: 阻塞(block)执行命令的客户端,直到有其他客户端给列表添加元素为止 (这个阻塞是有超时时间的,不会阻塞到底)
- BLPOP
- BRPOP
- BRPOPLPUSH
集合
常用命令:
- SADD
- SREM
- SISMEMBER
- SCARD
- SMEMBERS
- SRANDMEMBER
- SPOP
- SMOVE
组合和处理多个集合的命令:
- SDIFF
SADD key_1 1 2 3 4 SADD key_2 4 5 6 7 SDIFF key_1 key_2 // ['1', '2', '3']
- SDIFFSTORE
SDIFFSTORE key_3 key_1 key_2 SMEMBERS key_3 // ['1', '2', '3']
- SINTER
SINITER key_1 key_2 // ['4']
- SINTERSTORE
SINTERSTORE key_4 key_1 key_2 SMEMBERS key_4 // ['1', '2', '3']
- SUNION
SUNION key_1 key_2 // ['1', '2', '3', '4', '5', '6', '7']
- SUNIONSTORE
SINTERSTORE key_5 key_1 key_2 SMEMBERS key_5 // ['1', '2', '3', '4', '5', '6', '7']
散列
常用命令:
- HGET
- HSET
- HMGET
- HMSET
- HDEL
- HLEN
一些高级操作
- HEXISTS
- HKEYS
- HVALS
- HGETALL
- HINCRBY
- HINCRBYFLOAT
有序集合
和散列存储着键与值之间的映射类似,有序集合也存储着成员与分值之间的映射,并且提供了分值处理命令,以及根据分值大小有序地获取(fetch)或扫描(scan)成员和分值的命令。
常用命令
- ZADD
- ZREM
- ZCARD
- ZINCRBY
- ZCOUNT
- ZRANK
- ZSCORE
- ZRANGE
有序集合的一些高级操作
- ZREVRANK
ZADD words 1 a 2 b 3 c ZREVRANK words c // 0 ZREVRANK words a // 2
- ZREVRANGE
ZREVRANGE words 0 1 // ['c', 'b']
- ZRANGEBYSORE
ZRANGEBYSCORE words 0 1 // ['a']
- ZREVRANGEBYSCORE
- ZREMRANGEBYRANK
- ZREMRANGEBYSCORE
- ZINTERSTORE
- ZUNIONSTORE
排序
redis 可以通过 SORT 命令根据字符串 列表 集合 有序集合 散列 这五种键里面存储着的数据, 对列表 集合 以及有序集合进行排序。
- SORT
RPUSH sort-input 23 15 110 7 SORT sort-input // ['7', '15', '23', '110] SORT sort-input alpha // ['110', '15', '23', '7'] HSET d-7 field 5 HSET d-15 field 1 HSET d-23 field 9 HSET d-110 field 3 SORT sort-input by='d-*->field' // ['15', '110', '7', '23'] SORT sort-input BY='d-*->field' get='d-*->field' // ['1', '3', '5', '9']
事务
redis事务不会像关系型数据库的事务一样可以回滚。 这里的事务主要是让一个客户端在不被其他客户端打断(interruption)的情况下执行多个命令 (因为这里的多个命令可以操作多个数据类型,所以事务就可以不被打断的操作多个类型的数据, 简单来说就是相当于把多个数据类型的多个命令变成了一个类似 LPOP
的单个命令)。 它会将 MULTI 和 EXEC 命令包围的的所有命令一个接一个地执行, 直到所有命令都执行完毕为止。只有当一个事务执行完毕时,redis 才会处理其他客户端的命令。
常用命令
- MULTI
- EXEC
- WATCH
- UNWATCH
键的过期事件
常用命令
- PERSIST
- TTL
- EXPIRE
- EXPIPEAT
- PTTL
- PEXPIRE
- PEXPIPEAT
发布订阅
常用命令
- SUBSCRIBE
- UNSUBSCRIBE
- PUBLISH
- PSUBSCRIBE
- PUNSUBSCRIBE
本作品采用《CC 协议》,转载必须注明作者和本文链接