《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 文件。
阻塞