《Redis 开发与运维》
《Redis 设计与实现》
Redis 开发与运维
set key value nx
只有不存在时才设置 key 的值,同setnx
。
set key value xx
只有存在时才设置 key 的值。
type key
查询 redis 的 key 类型。
object encoding key
判断 key 的内部编码类型。
1 2 3 4
| 127.0.0.1:6379> rpush l a b c d e f (integer) 6 127.0.0.1:6379> object encoding l "quicklist"
|
-
incr key
自增 key。
- 值不是整数,返回错误。
- 值是整数,返回自增后的结果。
- 键不存在,按照值为 0 自增,返回结果为 1。
-
decr key
、incrby key increment
、decrby key decrement
、incrbyfloat
和加减相关。
-
hset key field value
设置哈希值。
-
hset nx key field value
不存在时设置。
-
hmset key value key value
批量设置
-
hlen key
计算 field 的个数。
-
hkeys key
返回所有field
。
-
hvals key
获取所有value
。
-
hgetall key
获取所有field+value
。
-
lrange key start end
获取指定范围内的元素列表
-
linsert key before|after pivot value
向某个元素前或者后插入元素
-
lrange key start end
获取指定范围内的元素列表
- 索引下标从左到右分别是 0 到 N-1,但是从右到左分别是-1 到-N
- lrange 中的 end 选项包含了自身
-
lindex key index
获取列表指定索引下标的元素
-
llen key
获取列表长度
-
lrem key count value
删除指定元素
- count>0,从左到右,删除最多 count 个元素
- count<0,从右到左,删除最多 count 绝对值个元素
- count=0,删除所有
-
ltrim key start end
按照索引范围修剪列表
-
lset key index newValue
修改指定索引下标的元素
-
blpop|brpop key [key ...] timeout
阻塞式弹出
- 列表为空则等待 timeout 的时间,如果为 0 则一直等待
- 列表不为空会立即返回
- 如果多个客户端对同一个键执行 brpop,那么最先执行 brpop 命令的客户端可以获取到弹出的值
集合
sadd key element [element ...]
添加元素
srem key element [element ...]
删除元素,返回结果为成功删除元素个数
scard key
计算元素个数,时间复杂度为 O(1)
sismember key element
判断元素是否在集合,在返回 1,不在返回 0
srandmember key [count]
随机从集合返回指定个数元素,不写默认为 1
spop key [count]
从集合随机弹出元素,元素会从集合中删除
smembers key
获取所有元素
sinter key [key ...]
求多个集合的交集
suinon key [key ...]
求多个集合的并集
sdiff key [key ...]
求多个集合的差集
sinterstore destination key [key ...]
将交集的结果保存
suionstore destination key [key ...]
将并集的结果保存
sdiffstore destination key [key ...]
将差集的结果保存
有序集合
zadd key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...]
添加成员
CH
返回此次操作后,有序集合元素和分数发生变化的个数
INCR
对 score 做增加,相当于后面介绍的 zincrby
zcard key
计算成员个数
zscore key member
计算某个成员的分数,不存在则返回 nil
zrank key member
计算成员的排名(从分数从低到高)
zrevrank key member
计算成员的排名(从分数从高到低)
zrem key member [member ...]
删除成员
zincrby key increment member
增加成员的分数
zrange/zrevrange key start end [withscores]
返回指定排名范围的成员
withscores
同时返回成员的分数
zrangebyscore/zrevrangebyscore key min max [WITHSCORES] [LIMIT offset count]
返回指定分数范围的成员
键管理
rename key newkey
键重命名,如果键本身存在会被覆盖
- 本质上要删除旧 key 和对应的 value 如果大 key 会阻塞(?为什么不直接复制呢?)
renamenx key newkey
不会被覆盖的重命名
randomkey
随机返回一个键
persist
清除键的过期时间
多实例
- 客户端连接
redis-cli -h 127.0.0.1 -p 6378
slaveof host port
成为某个实例的从实例
复制
- Redis 启动后有一个 40 位的 16 进制字符串作为运行 id,如果主节点的运行 id 变了,从节点要做全量复制。
1
| 127.0.0.1:6379> info server
|
debug reload
可以不重启去变更一些配置。
debug reload
命令会阻塞当前 Redis 节点主线程,阻塞期间会生成本地 RDB 快照并清空数据之后再加载 RDB 文件。
阻塞