官方文档:http://redisdoc.com/topic/persistence.html
一、编译redis源码和安装redis
1.yum install gcc-c++ 安装编译环境
2.make 编译
3.make install 安装,默认安装到/usr/local/bin下
4.redis.conf 修改daemonize为yes,后台启动
5.redis-cli 启动客户端 验证通不通ping " "
6.redi s-cli shutdown 关闭redis
二、redis使用
1.select 0 切换数据库
2.单线程+多路IO复用技术(redis),使用非阻塞socket技术,监听;多线程+锁(memcache)
3.redis数据类型
string:字符串,二进制安全,图片视频可以序列化成字符串,512M
set:无需不重复集合
list:有序可重复集合
hash:map双列集合
zset:有序不重复集合
4. keys * 查看所有的key
dbsize 查看key数量
exists key 是否存在
type key 类型
del key 删除
expire key seconds 设置过期时间
ttl key 查看过期时间
flushdb 清空当前库
flushall 清空所有库
5.string类型常用操作
set
get
append key value2 将值追加到value后面
strlen value字符串长度
setnx key不存在时设置
incr 将数字自增1
decr 自减
incrby 自增,自定义数字
mget,mset,msetnx 批量
getrange 类似于substring
setex 设置的同时设置超时时间
getset 获取的时候设置新值
6.list类型常用操作
lpush/rpush 推数据
lpop/rpop 拉取数据
rpoplpush k1 k2 从k1右边取初,存入k2左边
lrange 从左开始索引范围取数据
lindex 左开始,去索引数据
llen 长度
linsert l1 before v1 newvaule 在v1后面插入
lrem l1 n v1 从左边删除n个v1
7.set无序集合常用操作
sadd k1 v1 v2 v3 添加
smembers 取出所有值
sismember k1 v1 v1是否是k1的成员
scard 数量
srem k1 v1 v2 批量删除值
spop 随机吐出一个值,会删除该值
srandmember k1 n 随机取出几个值
sinter k1 k2 交集
sunion k1 k2 并集
sdiff k1 k2 差集
8.hash类型常用操作
hset k1 f1 value 插入值
hget k2 f1 取值
hmset 批量插入值
hexistskey 查看是否有该属性
hkeys 返回所有的属性
hvals 返回所有的值
hincrby 给属性增加值
hsetnx 不存在时添加
9.zset常用操作
zadd z1 1000 v1 2000 v2 3000 v3 添加
zrange z1 0 -1 withscores 查找
三、redis事务
1.单独隔离,事务中的命令序列化,串联,按照顺序执行,不会被其他客户端打断
2.multi - 命令 - exec
3.悲观锁 ,乐观锁(watch key)
四.redis持久化
RDB:
900秒内有一次改变就触发写入;300秒内有10次改变就触发写入;60秒内有10000次改变就触发写入
rdb恢复速度快;但会丢失数据;文件小
AOF:
需要手动开启
恢复慢;文件大;可读的日志文件;丢失数据概率小;
五、主从复制
slaveof ip port
info replication
master写 slave 读
先将rdb文件给从机加载,后面的写操作直接传给从机
一主两仆
slave no one反客为主
哨兵模式:
新建 sentinel.conf sentinel monitor mymaster ip port 1(至少有多少个哨兵同意迁移的数量)