redis笔记
单进程,默认16库,
select N 切换库
flushdb 清空库
类型
- string 字符串
- list 列表
- set 集合
- sorted set有序集合
- hash哈希
一个字符串支持512M
有序集合 每个元素会关联一个double类型分数。成员唯一,分数可以重复。
常用命令
key:
keys *
exists key
move key db 移除key 从库中
expire key 为key 设置过期时间
ttl key 查看多少秒过期,-1 永不过期, -2已过期
type key 查看类型
del key 删除
string:
getrange key 0-N setrange key 0-N XXX 获取字符串范围内容, 设置范围内为XXX
setex 设置生命值多少秒 setnx key 设置一个不存在的key
mset mget msetnx
list:
lpush rpush lrange
lpop rpop
lindex
llen
lrem key 2 value 删除2个value
ltrim key 0-N 截取并复制给key (其他的删除了)
rpoplpush 弹出前面key的值 加入后面的key中
lset key index value 设置key中 index下标的值
linsert key before/afrer value1 value2 key中1值得前面后后面加入2值
set:
sadd key value 添加到key集合
smembers key 查询集合
sismember key m 查询m是否在key集合中
scard key 集合ket的基数
spop key 随机移除一个元素并返回元素的值
srem key m 移除m从key的集合中
smove K1 K2 m 将k1的m一刀k2里
sinter key1 key2 交集
sunion key1 key2 并集
sdiff key1 key2 差集
hash:
hset user name ali
hset user age 33 设置user数据
hget user name 获取user.name
hmset human name tom age 44 设置多数据
hmget human name age 获取多数据
hgetall human
hdel human name 删除name
hlen human 长度
hexists human age 是否存在
hkeys human 获取所有key
hvals human 获取所有value
hincrby hincrbyfloat
hsetnx 不存在添加
zset:
zadd key value:score 设置值的分数
zrange key
zrangebyscore key min max (不包含 limit 升序
zrevrangebyscore 降序
zrem key value
zcount key min max 范围内多少个
zscore key m 返回key 中m的分数值
zrevrange key start stop 降序展示
持久化:
rdb aof
rdb
快照方式定期生成临时文件,从临时文件替换上次持久化的文件。数据不是非常敏感。 dump.rdb dump.rdb 关机会清空文件,备份需要导出到另一台机器。 设备启动会去读取domp.rdb来恢复数据(文件名可以设置)。 关闭rdb 设置save为空 save命令 bgsave后台异步快照 备份到dump.rdb 优势: 适合大规模莫恢复,完整性和一致性要求不高。 劣势: 意外down 最后一次备份不到。内存被克隆一份,2倍的性能膨胀。
aof
日行形式记录每个写操作,将所有写指令记录。 appendonly yes 开启 注意flushdb all 这些东西也会记录操作。 同时存在两种备份,优先恢复aof文件,如果aof失败, 导入rbd备份数据。 aof文件损毁或异常时, 通过redis-check-aof程序修复后再恢复。
配置:
appendfsync always/everysec/no 同步设置
rewrite:
aof 采用文件追加方式,记录文件会越来越大,重写机智,aof
文件大小超过阈值时,会启动aof文件的内容压缩,只保留可恢复的最小指令。默认配置64M
事务:
mulit 开启 语句 exec执行, discard 取消
语法错误时,全部没执行,如果设置错误,其他执行,错误的不执行。
监控 锁 乐观锁 悲观锁:
悲观锁,锁表。
乐观锁,行信息版本更新。 谁先提交谁成功。
wacth 监控字段,执行事务,如果监控字段未出现变化,事务执行成功。
复制机制:
master 写 slave读
配置slave为主 slaveof 主库id 端口
info replication 查看信息
从机不能写数据
方式 1主机 多从机
主机down,从机待命。主机启动,从机继续同步主机。 从机端开,会变成master,除非配置文件规定。否则需要 slaveof 重新顶可以。 主机down后,如果从机某台执行 slaveof no one ,使当前从库变主库。
方式2 主机->从机->从机 相连
方式3 哨兵
监控主机是否down,down后根据投票选出从机转换主库。 配置中添加 sentinel.conf ,编写配置: sentinel monitor 主机配置 地址 端口 1 1标识投票 启动哨兵:redis-sentinel 哨兵配置